這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。
指針數組:array of pointers,即用於存儲指針的數組,也就是數組元素都是指針
數組指針:a pointer to an array,即指向數組的指針
還要注意的是他們用法的區別,下面舉例說明。
int* a[4] 指針數組
表示:數組a中的元素都爲int型指針
元素表示:*a[i] *(a[i])是一樣的,因爲[]優先級高於*
int (*a)[4] 數組指針
表示:指向數組a的指針
元素表示:(*a)[i]
注意:在實際應用中,對於指針數組,我們經常這樣使用:
typedef int* pInt;
pInt a[4];#include <iostream> using namespace std; int main() { int c[4]={1,2,3,4}; int *a[4]; //指針數組 本質是數組 數組元素是指針 數組只能一個一個地賦值 int (*b)[4]; //數組指針 本質是指針 指針所指向的元素是數組 指針可以整片賦值 b=&c; //將數組c中元素賦給數組a for(int i=0;i<4;i++) { a[i]=&c[i]; } //輸出看下結果 cout<<*a[1]<<endl; //輸出2就對 cout<<(*b)[2]<<endl; //輸出3就對 return 0; }
原文地址:http://www.cnblogs.com/Romi/archive/2012/01/10/2317898.html