2013-03-28 91 views
-3

C中的數組指針和指針數組有什麼區別?C中的數組指針和指針數組

+1

這可能是對你的使用Ksindev。 http://stackoverflow.com/questions/1641957/is-array-name-a-pointer-in-c – 2013-03-28 08:54:11

+0

沒有代碼示例,你的問題有點含糊。你在問「指向數組的指針」和「指針數組」之間的區別嗎? – 2013-03-28 08:54:48

+0

如果你弄清楚每一種是什麼,那麼差異就會隨之而來。 – 2013-03-28 08:58:36

回答

1

一種數組指針是參考一個陣列的指針。 您可以使用指針算術訪問項目,而在相反的方向上,您可以使用指針以數組方式訪問項目。

int array [20]; 
int a = *(array + 10); 
int b = array[10]; 

int *p; 
p = array; 

int c = *(p + 10); 
int d = p[10]; 

所有的方法都可以,a,b,c,d會達到相同的值。但是,請小心使用不同的方法。 陣列和P之間的區別是

p ++; // allowed 
array ++; // fail 

指針數組只是意味着你的陣列項指針(不過到什麼類型)。

char* parray[20]; 

此數組保存20點的指針「CHAR」或者根據解釋的,以「串」

所以粒子陣列是一個陣列char指針的的數組指針

2

數組指針指向數組,指針數組是指針的數組,可能指向某處。

int array[10]; // `array` is an array pointer 

int* pointers_array[10]; 
+1

'array'不是數組指針,它是數組的名稱。如果你使用'&array',你會得到一個指向數組的指針,而不是指向指針的指針。 – 2013-03-28 09:37:28