陣列指標和指標陣列
這兩個名字不同當然所代表的意思也就不同。我剛開始看到這就嚇到了,主要是中文太博大精深了,整這樣的簡稱太專業了,把人都繞暈了。從英文解釋或中文全稱看就比較容易理解。
指標陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標
陣列指標:a pointer to an array,即指向陣列的指標
還要注意的是他們用法的區別,下面舉例說明。
int* a[4] 指標陣列
表示:陣列a中的元素都為int型指標
元素表示:*a[i] *(a[i])是一樣的,因為[]優先順序高於*
int (*a)[4] 陣列指標
表示:指向陣列a的指標
元素表示:(*a)[i]
注意:在實際應用中,對於指標陣列,我們經常這樣使用:
1
2
|
typedef
int * pInt; pInt a[4]; |
這跟上面指標陣列定義所表達的意思是一樣的,只不過採取了型別變換。
程式碼演示如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#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; } |
注意:定義了陣列指標,該指標指向這個陣列的首地址,必須給指標指定一個地址,容易犯的錯得就是,不給b地址,直接用(*b)[i]=c[i]給陣列b中元素賦值,這時陣列指標不知道指向哪裡,除錯時可能沒錯,但執行時肯定出現問題,使用指標時要注意這個問題。但為什麼a就不用給他地址呢,a的元素是指標,實際上for迴圈內已經給陣列a中元素指定地址了。但若在for迴圈內寫*a[i]=c[i],這同樣會出問題。總之一句話,定義了指標一定要知道指標指向哪裡,不然要悲劇。
類似的還有指標函式和函式指標,遇到了再說吧。
相關文章
- 陣列指標,指標陣列陣列指標
- 陣列指標 指標陣列陣列指標
- 指標陣列和陣列指標與二維陣列指標陣列
- 指標陣列與陣列指標指標陣列
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 陣列和指標陣列指標
- 指標和陣列指標陣列
- 陣列指標陣列指標
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- 陣列指標:a pointer to an array,即指向陣列的指標陣列指標
- C陣列和指標陣列指標
- 徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係C++陣列指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- 二維陣列和指標陣列指標
- C++ 指標陣列與陣列指標的區別C++指標陣列
- 指向陣列的指標陣列指標
- C++語言中陣列指標和指標陣列徹底分析(系列一) (轉)C++陣列指標
- 指標和二位陣列指標陣列
- C語言程式設計基礎:指標陣列與陣列指標C語言程式設計指標陣列
- C語言學習歷程(十二)陣列指標與指標陣列C語言陣列指標
- 補充內容:C++語言中陣列指標和指標陣列徹底分析 (轉)C++陣列指標
- 二維陣列與指標陣列指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- C語言 指標與陣列C語言指標陣列
- 陣列與指標&氣泡排序陣列指標排序
- 字串指標與字元陣列 (轉)字串指標字元陣列
- 指標陣列練習排列字串指標陣列字串
- 【C】 28_指標和陣列分析(上)指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 日常學習儲存--陣列和指標陣列指標
- C語言指標和陣列基礎C語言指標陣列
- 在COM中使用陣列引數-陣列指標 (轉)陣列指標
- C指標和陣列的關係詳解指標陣列
- C語言指標和陣列筆試題C語言指標陣列筆試
- 陣列,函式與指標 詳解陣列函式指標
- c程式設計--指標與陣列C程式程式設計指標陣列
- c語言-運算子,陣列,指標C語言陣列指標
- 【原創】淺談指標(九)二維陣列和多級指標相關指標陣列