0

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

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

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

先感谢您。

4

5 回答 5

1

如果某些代码需要知道数组的大小,请确保调用它的代码告诉它数组的大小。

于 2013-03-18T12:21:27.860 回答
0

不,一旦将其转换为指针(在将数组作为参数传递给函数时也会这样做),您就会丢失有关数组的所有大小信息。

于 2013-03-18T12:15:30.847 回答
0

指针(当您执行此类操作时,数组会衰减到)对它们所指向的数据的大小一无所知。您需要单独跟踪它。

于 2013-03-18T12:15:38.567 回答
0

您无法获取该信息,您唯一能做的就是在需要时嵌入信息:

int* array = malloc( sizeof(int) * (n + 1) );
*array = n;
++array;

那么当你想知道尺寸时

int n = *(array - 1);

同样可以用 char 或任何你需要的类型来完成。

于 2013-03-18T12:23:12.453 回答
-1

这可能是因为 4 字节对齐。

要确认尝试 a[8]、a[10] 等

于 2013-03-18T12:18:47.023 回答