我可以知道char指针变量指向的char-array-size吗?

时间:2013-03-18 12:13:49

标签: c

我必须知道char指针变量指向的数组大小。

但是你知道sizeof操作不起作用。

char a[5];
char *b= a;
int c = sizeof(b);
printf("%d", sizeof(b)); // 8(64 bit cpu) printed, not 5 .

提前谢谢。

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]等