C高手帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:00:12
1.请选出正确的程序段:
其中答案项是:
int *s,k;char *p,c;s=&k;p=&c;*p="a"
可是p不是指向char型吗?而"a"明显是字符串,不是一个字符,可以这样赋值吗?
2.char *p="abcdefgh";
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
A.8 B.12 C.4 D.7
我选D了,可答案是C,为什么啊?

1 char *p实际上定义了p是一个char指针 所以p实际上保存的是一个内存地址 *p是从p这个地址开始的一组char变量 也就是字符串性质的 这种方法在标准c语言里是不提倡的
2 每个字符串结尾有一个默认添加但不占用字符串长度的标识符\0 strlen在取长度的时候就是统计到\0之前的字符串长度

只有在初始化的时候可以