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