2013-03-28 89 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