1

这听起来可能很愚蠢和愚蠢。我很想了解两者之间的区别

char *token[32];

char token[32];

char token[32] 将 token 声明为可以包含 32 个字符的字符数组。

在 char *token[32] 的情况下,token 包含 32 个字符指针。这些指针指向什么?或者更具体地说,用户有责任为指针指向的内容分配内存。?

4

2 回答 2

7

现在char *token[32]将 token 声明为指向可以包含 32 个字符的字符数组的指针。

不,它声明token为一个由 32 个字符指针组成的数组。换句话说,在第一种情况下token保存 32 个字符,在第二种情况下,它保存 32 个指针。

如果你想声明一个指向包含 32 个字符的字符数组的指针,你会写

char arr[32];
char (*token)[32] = &arr;
于 2012-12-20T22:31:21.750 回答
4
char *token[32];

是一个由 32 个字符指针组成的数组。即该数组可以用作:

token[0]=p1;
token[1]=p2;
.....

其中 p1 和 p2 可以是char[]char*类型。

这篇文章可能会帮助您了解除所问内容之外的一些更相关的内容:

指向数组/指针数组的C指针消歧

于 2012-12-20T22:31:22.483 回答