我必须知道char指针变量指向的数组大小。
但是你知道sizeof操作不起作用。
char a[5];
char *b= a;
int c = sizeof(b);
printf("%d", sizeof(b)); // 8(64 bit cpu) printed, not 5 .
提前谢谢。
答案 0 :(得分:1)
如果某段代码需要知道数组的大小,请确保调用它的代码告诉它它的数组大小。
答案 1 :(得分:0)
不,一旦将其转换为指针(在将数组作为参数传递给函数时也会完成),您将丢失有关该数组的所有大小信息。
答案 2 :(得分:0)
指针(当你做这些事情时,这些数组会衰减)不会“知道”任何有关他们所指向的数据大小的信息。您需要单独跟踪它。
答案 3 :(得分:0)
你无法获得这些信息,你唯一能做的就是在你需要的时候嵌入信息:
int* array = malloc( sizeof(int) * (n + 1) );
*array = n;
++array;
然后当你想知道尺寸时
int n = *(array - 1);
可以使用char或您需要的任何类型完成相同的操作。
答案 4 :(得分:-1)
这可能是因为4字节对齐。
确认尝试[8],[10]等