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

我必须知道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字节对齐。

要确认尝试[8],[10]等