strlen函数求字符串长度的原理是:从起始地址开始按字节读取,读取到'\0'(就是0)停止,
int a[2]={2,3}; a的两个元素占8个字节:0x02 0x00 0x00 0x00 0x03 0x00 0x00 0x00
那么strlen(a)从0x02读起,到0x00就停止,于是返回长度1,如果你把a[0]赋值为257,那就会返回2,a[0]赋值为65793,那就会返回3, a[0]赋值为16843009,就会返回5
数组当作函数参数,那就只是一个指针了,对于32位系统那长度就是4
a=(int*)malloc(2);
printf("%d\n",strlen(a)); 这个结果是不定的,*a的值是随机的,a后面的地址内的值也是随机的,而strlen会从a开始一直往后读,直到读到0为止。
int a[2]={2,3}; a的两个元素占8个字节:0x02 0x00 0x00 0x00 0x03 0x00 0x00 0x00
那么strlen(a)从0x02读起,到0x00就停止,于是返回长度1,如果你把a[0]赋值为257,那就会返回2,a[0]赋值为65793,那就会返回3, a[0]赋值为16843009,就会返回5
数组当作函数参数,那就只是一个指针了,对于32位系统那长度就是4
a=(int*)malloc(2);
printf("%d\n",strlen(a)); 这个结果是不定的,*a的值是随机的,a后面的地址内的值也是随机的,而strlen会从a开始一直往后读,直到读到0为止。