2012-12-20 40 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