c是char类型,一个字符。s是字符串string,c语言没有专门的字符串类型,所以要用一个char类型的指针。
C语言格式化描述字符串中的*在scanf和printf中有不同的含义。在scanf中的含义是忽略掉这个匹配的输入,...
c++语言是c语言发展起来的,所以继承了c语言几乎所有的特点,但c++语言又有自己的个性。c语言是一种面向过程的编程语言,而c++主要是面向过程的,因此c++有类的概念,而c语言就没有。c++的功能强大,编译器复杂,适合高端程序的设计和编辑,c语言的编译器简易,适合低端程序。
s是二维指针,是一个指向指针的指针。假设 int a, *p,**s;则 p=&a; s=&p;能看懂吗?这里的**s==a,*s==p, s就是一个存放着p的地址的指针变量
C语言中,scanf与scanf_s的简单区别 scanf()不会检查输入边界,可能造成数据溢出,scanf_s()会进行边界检查。 如name[5], scanf("%s",name),如果输入abcdefgh,则会使得fgh溢出进入其他地方,造成程序错误, 容易被黑客利用;而scanf_s("%s",name),则会只会接收前5个输入,其后的无效,避免了程序的漏洞。
从数组看,gets(s) s应该是一个一维数组;gets(s[0]) s应该是一个二维数组;从指针看,s都是一个指针变量
s.top表示S是结构体变量,c哪来对象。
!在C语言中是逻辑语“非”,s[i]指数组s的第i+1个变量(数组下标从零算起),s[i]!不存在这样表达方式我觉得!后面应该有其他的语句,加!后表其相反运算如!=就是不等于
a->s[i]是a地址上的结构体成员变量s的第i个元素。写成非指针的方式,就是a[0].s[i];这种写法,要求a和s都必须是指针类型。a[i].s是a地址上,第i个a中的成员变量s。这种写法,要求a必须是指针,而s不一定是指针。对比a[0].s[i]和a[i].s,可以看出,这两个是完全不同的意义。
假设s数组的首地址是0x1234ABDE,数组中存储了{1,2,3,4,5,6,7,8,9,10}等几个数据。那么s[1] = 2;而 &s[1] = 0x1234ABDE+4;&s[0]=0x1234ABDE.区别:可以把地址简单认为是一个"小房间",&s[1]就表示s[1]的"小房间"。