2012-12-20 42 views
1

这可能听起来很无聊和stupid.I我tyring了解差异*令牌[32]和炭令牌[32]

char *token[32]; 

char token[32]; 

字符标记之间的区别[32]将令牌声明为可包含32个字符的字符数组。

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

+0

一个是指向'char'的数组,一个是'char's – Cornstalks

回答

4
char *token[32]; 

是32个字符指针数组。即该阵列可被用作:

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

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

这篇文章可以帮助你理解比其他问一些相关的东西:

C pointer to array/array of pointers disambiguation

7

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

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

如果你想声明一个指针,举行32个字符的字符数组,你会写

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

+1数组不,我放弃了最后一对decl(实际上是* last * decl,这比人们首先给予的分数更重要)。我其实很喜欢阅读几乎所有的答案= P – WhozCraig

+0

@WhozCraig谢谢:) – 2012-12-20 22:36:34