1樓:育知同創教育
(1)陣列可以申請在棧區和資料區;指標可以指向任意型別的記憶體塊(2)sizeof作用於陣列時,得到的是陣列所佔的記憶體大小;作用於指標時,得到的都是4個位元組的大小
(3)陣列名表示陣列首位址,值不可以改變,如不可以將++作用於陣列名上;普通指標的值可以改變,如可將++作用於指標上
(4)用字串初始化字元陣列是將字串的內容拷貝到字元陣列中;用字串初始化字元指標是將字串的首位址賦給指標,也就是指標指向了該陣列
2樓:千鋒教育
從英文解釋或中文全稱看就比較容易理解。
指標陣列: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
using namespace std;
int main()
;int *a[4]; //指標陣列
int (*b)[4]; //陣列指標
b=&c;
//將陣列c中元素賦給陣列a
for(int i=0;i<4;i++)
//輸出看下結果
cout<<*a[1]< }注意:定義了陣列指標,該指標指向這個陣列的首位址,必須給指標指定乙個位址,容易犯的錯得就是,不給b位址,直接用(*b)[i]=c[i]給陣列b中元素賦值,這時陣列指標不知道指向**,除錯時可能沒錯,但執行時肯定出現問題,使用指標時要注意這個問題。但為什麼a就不用給他位址呢,a的元素是指標,實際上for迴圈內已經給陣列a中元素指定位址了。 但若在for迴圈內寫*a[i]=c[i],這同樣會出問題。 陣列和指標的區別? 3樓:育知同創教育 (1)陣列可以申請在棧區和資料區;指標可以指向任意型別的記憶體塊(2)sizeof作用於陣列時,得到的是陣列所佔的記憶體大小;作用於指標時,得到的都是4個位元組的大小 (3)陣列名表示陣列首位址,值不可以改變,如不可以將++作用於陣列名上;普通指標的值可以改變,如可將++作用於指標上 (4)用字串初始化字元陣列是將字串的內容拷貝到字元陣列中;用字串初始化字元指標是將字串的首位址賦給指標,也就是指標指向了該陣列 陣列指標和指標陣列的區別 4樓:匿名使用者 陣列指標(也稱行指標) 定義 int (*p)[n]; ()優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型資料的長度。 如要將二維陣列賦給一指標,應這樣賦值: int a[3][4]; int (*p)[4]; //該語句是定義乙個陣列指標,指向含4個元素的一維陣列。 p=a; //將該二維陣列的首位址賦給p,也就是a[0]或&a[0][0] p++; //該語句執行過後,也就是p=p+1;p跨過行a[0]指向了行a[1] 所以陣列指標也稱指向一維陣列的指標,亦稱行指標。 指標陣列 定義 int *p[n]; 優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列,它有n個指標型別的陣列元素。這裡執行p+1時,則p指向下乙個陣列元素,這 樣賦值是錯誤的:p=a;因為p是個不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它們分別是指標變數可以用來存放變數地 址。但可以這樣 *p=a; 這裡*p表示指標陣列第乙個元素的值,a的首位址的值。 如要將二維陣列賦給一指標陣列: int *p[3]; int a[3][4]; p++; //該語句表示p陣列指向下乙個陣列元素。注:此陣列每乙個元素都是乙個指標 for(i=0;i<3;i++) p[i]=a[i] 這裡int *p[3] 表示乙個一維陣列內存放著三個指標變數,分別是p[0]、p[1]、p[2] 所以要分別賦值。 這樣兩者的區別就豁然開朗了,陣列指標只是乙個指標變數,似乎是c語言裡專門用來指向二維陣列的,它占有記憶體中乙個指標的儲存空間。指標陣列是多個指標變數,以陣列形式存在記憶體當中,占有多個指標的儲存空間。 還需要說明的一點就是,同時用來指向二維陣列時,其引用和用陣列名引用都是一樣的。 比如要表示陣列中i行j列乙個元素: *(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j] 優先順序:()>>* 5樓:千鋒教育 指標陣列: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 using namespace std; int main() ;int *a[4]; //指標陣列 int (*b)[4]; //陣列指標 b=&c; //將陣列c中元素賦給陣列a for(int i=0;i<4;i++) //輸出看下結果 cout<<*a[1]< }注意:定義了陣列指標,該指標指向這個陣列的首位址,必須給指標指定乙個位址,容易犯的錯得就是,不給b位址,直接用(*b)[i]=c[i]給陣列b中元素賦值,這時陣列指標不知道指向**,除錯時可能沒錯,但執行時肯定出現問題,使用指標時要注意這個問題。但為什麼a就不用給他位址呢,a的元素是指標,實際上for迴圈內已經給陣列a中元素指定位址了。 但若在for迴圈內寫*a[i]=c[i],這同樣會出問題。總之一句話,定義了指標一定要知道指標指向**,不然要悲劇。 6樓:e時代幽默網 陣列指標,就是乙個指向陣列首元素的指標,或者說是指向乙個陣列起始記憶體位址的指標。 指標陣列,就是乙個陣列中的所有元素型別均為指標,也就是說是乙個專門用來存放一堆指標的陣列。 陣列指標和指標陣列的區別 7樓:育知同創教育 int a[3][4]這個bai無需多說,就du是乙個二zhi維陣列。 int (*p)[4]就相當於daoint p[4],它就是乙個二維陣列的指標,可以 專指向乙個第屬二維度為4的二維陣列。而a就是這樣的陣列,因而下面是合法的。 p=a; int *p[3]是指標陣列。說白了,就是定義了三個指標,分別為p[0],p[1],p[2]。可以將他們單獨拿來使用。 int a1,a2,a3; p[0]=&a1; p[1]=&a2; p[2]=&a3; c語言中的指標陣列和陣列指標的區別 8樓:黑丶雨 指標陣列:陣列裡的每乙個元素都是指標如*p[10],裡面的 p[0] 到 p[9] 都是指標; 可參考:http://baike. 陣列指標:指向乙個陣列的指標,如 arr[10] 是乙個陣列, 讓乙個指標指向這個陣列 p = arr; 訪問時通過 *(p + n) 或 p[n] 訪問元素值,n為元素索引值; 可參考:http://baike. 9樓:育知同創教育 int (*p)[4]; // 定義乙個陣列指標,指向含4個元素的一維陣列,陣列元素是int型別。 int *p[4]; // 定義乙個指標陣列,陣列中每個元素是乙個指標,指標指向**就要根據程式來定了。 判斷陣列指標與指標陣列主要通過運算子的優先順序來判斷。 int (*p)[4]; // 由於( )的優先順序高,說明p是乙個指標,指向乙個一維陣列的指標 int *p[4]; // 由於[ ]的優先順序高,先與p結合成為乙個陣列,再由int*說明這是乙個整型指標陣列 c 語言指標的指標和二維陣列的區別? 10樓:文帝寶寶 指標的指標和二維陣列完全倆東西,二維陣列是 一維陣列的一維陣列,元素是陣列,所以可以隱式轉化為int (*)[3],跟int **兩回事,擴充套件到更多維或其它型別也是成立的,只能隱式轉化為第一維的元素的指標 補充說明下隱式轉化為指標,簡單說就是這樣(t是任意型別) 設有乙個陣列t a[10]; a的型別是「t [10]」,在做大多數運算的時候,都先隱式轉化為「t *」型別,即t的指標 對於多維陣列,可以看做是乙個一維陣列,陣列的元素型別就是第二維開始的陣列型別,比如: t a[10][20][30]; 是乙個有10個型別為「t [20][30]」元素的陣列,用**解釋更清晰: typedef t u[20][30]; u a[10]; 跟上面的定義等價,所以a只能隱式轉化為「u *」,「u *」後也就是「t (*)[20][30]」這個型別了,跟多級指標沒關係,因此,多維陣列不存在到多級指標的轉化規則,強轉只會導致問題 int a 3 4 這個bai無需多說,就du是乙個二zhi維陣列。int p 4 就相當於daoint p 4 它就是乙個二維陣列的指標,可以 專指向乙個第屬二維度為4的二維陣列。而a就是這樣的陣列,因而下面是合法的。p a int p 3 是指標陣列。說白了,就是定義了三個指標,分別為p 0 p... 指標陣列 陣列裡的每乙個元素都是指標如 p 10 裡面的 p 0 到 p 9 都是指標 可參考 http baike.陣列指標 指向乙個陣列的指標,如 arr 10 是乙個陣列,讓乙個指標指向這個陣列 p arr 訪問時通過 p n 或 p n 訪問元素值,n為元素索引值 可參考 http baik... 要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42...陣列指標和指標陣列的區別,c語言中的指標陣列和陣列指標的區別
c語言中的指標陣列和陣列指標的區別
c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和