sizeof指针数组长度问题
#include <stdio.h>int main(void){
char *p = {"aaa","bbb","ccc","ddd","eee"};
int i;
for(i = 0; i < 5; i++){
printf("%d\n",sizeof(p) );
}
return 0;
}
打印出来都是8, 不太清楚8是那里来的,应该是 3或4才对,
萌新求助{:10_254:}
p的类型是char*,
char*是一个指针!
char*是一个指针!
char*是一个指针!
既然是指针,那么在32位下长度就为4,64位下长度就为8 指针数组存的都是地址啊,长度操作系统决定的{:10_257:}
如果是想判断里面的字符串的长度的话,还是用strlen()好了
加油咯{:10_256:} sizeof是运算符:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度)。
strlen是函数:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
页:
[1]