和数组方面相关
主要不明白后三个答案怎么来的,想了好久也没有想出来
首先,要明白char *p与char a[]两者是一回事,实际上都是定义了一个字符型的指针;但是a[]是可以限制长度的;
其次,char型指令它的大小为4个字符,因此sizeof(p)=sizeof(a)=4;
题目中,字符串是经过函数传参数到函数fun内部的,这里可以理解为只要字符串大小不超过参数大小,那么可以将参数替换成字符串,所有的参数操作实际上都是操作字符串。因此,sizeof(a)=sizeof("abcdef")=6
printf("%d ", sizeof(p)); p是指针变量,32位系统,32位/8位 = 4 字节,所以输出4
fun(char a[10]); 数组名作为形参,在该函数内退化为指针,所以sizeof(a)得到是指针a的大小为4字节
strlen(a),strlen()函数计算给定字符串的(unsigned int型)长度,它从字符串某个位置开始扫描,
直到碰到第一个字符串结束符'\0'为止(不包括'\0'在内),而这里a 恰好是字符串的首地址,得到字符串的长度值为 6.
不知道你这个问题是否已经解决, 如果还没有解决的话: