補充內容:C++語言中陣列指標和指標陣列徹底分析 (轉)
上一次我們主要說明陣列,指標,指標陣列,陣列指標這幾個很基本的概念,
不過有一點上一次我沒有提及,那就是我們使用typedef定義指向陣列指標
的陣列,這個叫法是不是很拗口呀,不過我們看具體的就清楚了。
組--------------
int a[2]={10,20};
int b[2]={30,40};
單的指向兩個元素陣列的指標
int (*p2arr)[2]=&a;
意這裡的變化--------
裡我們宣告簡單的型別P2ARR.可以這樣描述
是一種自定義的型別。她的功能描述
用來描述整數陣列的,這個陣列只能含有兩個元素
typedef int (*P2ARR)[2];
P2ARR pp=&b;
pp=p2arr;//型別一致
裡我們定義指向指向陣列指標的陣列
P2ARR ap2a[2]={&a,&b};
果我們採用下面的寫法則是錯誤的,原因看下面分析
ap2a[2]={a,b};//------錯誤寫法-------
---------還有一點注意----------------
有人可以能會說,定義數阻指標的陣列,下面這樣的形式
好像也可以做到的。
int (*p2arr)[2][2];
咋一看,好像是的,但是仔細想想。原來上面是定義
一個指標,這個指標是指向二維陣列的指標,還是
陣列指標,而不是陣列指標陣列。這一點,應該很容易明白的。
上一次我講到int []陣列宣告與int *型別在引數等方面轉換的例子。
這裡有一點補充的,我們實際上現在還是不清楚陣列來C++層面的
表示,也就是我們不知道編譯器使用什麼樣的結構形式來表示陣列的。所以
上面這些轉換隻能轉換而已,我們不能有更多的假設。
----------我的想象,我的猜想--------
我是這樣相像的,C++採用類似中Array類的形式來管理陣列。當然其中
有許多c++語言的特徵,比如operator *,operator ->等過載,但是這些型別
轉換運算子的使用,只有編譯器認為需要的時候才會的,因為陣列表示本身
就是編譯器內部結構的嘛。目前到這裡,我們也只能認為在函式引數使用等情況
下才發生int []到int *的轉換。
看下面的程式。
#include
using namespace std;
void change(int pa[],int index)
{
pa[index]=200;
}
int main()
{
int a[3]={1,2,3};
change(a,0);//這裡編譯器已經把 int a[3],轉換成int *指標傳給了函式
個是語言實現細節,請參考《the c++ programming language》
cout< return 0;
}
但是我們上面的標註行
ap2a[2]={a,b};//------錯誤寫法-------
則是應該這樣理解:陣列就是陣列,指標就是指標,雖然編譯器需要的時候
會進行一定的轉換,但是我們不能認為那些轉換是“想當然“的。
上面這一行,編譯器就沒有為我們進行型別轉換的,所以我們要自己動手了。
// ap2a[2]={&a,&b};//------正確寫法-------
上面這些文字,主要一點就是說明了,有些行為是編譯器完成的,而且還有一些
詭秘。但是我們要知道編譯器做了那些,那些是要完成自己做的。重要的一點,
就是我們學會如何去簡單使用typedef定義型別.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1003889/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++語言中陣列指標和指標陣列徹底分析(系列一) (轉)C++陣列指標
- 徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係C++陣列指標
- 陣列指標和指標陣列陣列指標
- 陣列指標,指標陣列陣列指標
- 陣列指標 指標陣列陣列指標
- 指標陣列和陣列指標與二維陣列指標陣列
- 指標陣列與陣列指標指標陣列
- 徹底粉碎“指標與陣列的困惑”(上) (轉)指標陣列
- Go 陣列指標(指向陣列的指標)Go陣列指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- 陣列和指標陣列指標
- 指標和陣列指標陣列
- C++ 指標陣列與陣列指標的區別C++指標陣列
- (C語言)使用指標列印陣列的內容C語言指標陣列
- 陣列指標陣列指標
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- 陣列指標:a pointer to an array,即指向陣列的指標陣列指標
- C語言程式設計基礎:指標陣列與陣列指標C語言程式設計指標陣列
- C語言學習歷程(十二)陣列指標與指標陣列C語言陣列指標
- 二維陣列和指標陣列指標
- C語言 指標與陣列C語言指標陣列
- C語言指標和陣列基礎C語言指標陣列
- 【C】 28_指標和陣列分析(上)指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 字串指標與字元陣列 (轉)字串指標字元陣列
- 指向陣列的指標陣列指標
- 指標和二位陣列指標陣列
- 在COM中使用陣列引數-陣列指標 (轉)陣列指標
- c語言-運算子,陣列,指標C語言陣列指標
- C語言指標和陣列筆試題C語言指標陣列筆試
- 二維陣列與指標陣列指標
- C語言核心之陣列和指標詳解C語言陣列指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 深入探索 C/C++ 陣列與指標的奧祕之一:陣列與指標概念剖析C++陣列指標
- 陣列與指標&氣泡排序陣列指標排序
- 日常學習儲存--陣列和指標陣列指標
- C語言雜談:指標與陣列 (上)C語言指標陣列
- C語言雜談:指標與陣列 (下)C語言指標陣列