第4题 a=p==&m;
展开p==&m 是指针p和m的指针比较
(注:这里的&为取地址操作符,即取m的地址和指针p比较,指针和指针比较),
指针地址不一样返回0(0为假,1为真),
所以a的值为0;
第8题
a:字符串是以'\0'为结束符的,所以 s[5]={"abcde"};丢失'\0'造成访问超越边界错误.
b:char *s="abcde"; 指针s指向的是数据"abcde"的地址,所以是正确.
c:char s; s="abcde";俗称悬浮指针,指针s没有内存空间并不能把字符串装进去,所以错误.
(c:正确的写法为:指针申请内存,后在把字符串装进去,否则地址没有空间不能进行赋值操作,只能指向操作.
char s= (char)malloc(6sizeof(char));//申请内存
s="abcde";//赋值
或指针指向:char *s,ss[]="abcde"; s=ss;
)
d:同a一样丢失\0字符,错误.
(a和0 正确的写法
为s[]="abcde";//编译器自行判断
或s[6]="abcde";//为\0预留空间
或s[6]={"abcde"};
或s[6]={'a','b','c','d','e','\0'};//手动添加\0
)
4 a后面是个判断,真为1,假为0
8
A {}里是个字符串,char需要字符类型
C *s="",这里*s是指针s的内容,也就是char,不是char*,类型不匹配。
D 字符串以'\0'结尾