char*token [32]和char token [32]之间的区别

liv*_*hak 1 c pointers char

这可能听起来非常愚蠢和愚蠢.我想了解它们之间的区别

char *token[32];
Run Code Online (Sandbox Code Playgroud)

char token[32];
Run Code Online (Sandbox Code Playgroud)

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

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

小智 7

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

不,它声明token是一个包含32个char指针的数组.换句话说,在第一种情况下token保持32个字符,在第二种情况下,它保持32个指针.

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

char arr[32];
char (*token)[32] = &arr;
Run Code Online (Sandbox Code Playgroud)