【问题标题】:difference between char *token[32] and char token[32]char *token[32] 和 char token[32] 的区别
【发布时间】:2012-12-20 22:29:46
【问题描述】:

这可能听起来很愚蠢和愚蠢。我很想了解

char *token[32];

char token[32];

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

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

【问题讨论】:

  • 一个是指向char的指针数组,一个是chars的数组

标签: c pointers char


【解决方案1】:

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

没有。它将token 声明为一个包含 32 个字符指针的数组。换句话说,在第一种情况下token 拥有 32 个字符,在第二种情况下,它拥有 32 个指针。

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

char arr[32];
char (*token)[32] = &arr;

【讨论】:

  • +1 不,一旦你输入最后一对 decl(实际上是 last decl,这比人们首先给予信任更重要),我就把它放回去了。我实际上喜欢阅读几乎所有的答案=P
【解决方案2】:
char *token[32];

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

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

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

这篇文章可能会帮助你理解一些比问的更相关的东西:

C pointer to array/array of pointers disambiguation

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 2013-03-22
    • 2011-11-25
    • 1970-01-01
    • 2021-04-28
    • 2013-10-04
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多