補充內容: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語言指標陣列字串
- Go 陣列指標(指向陣列的指標)Go陣列指標
- (C語言)使用指標列印陣列的內容C語言指標陣列
- Golang 學習——陣列指標和指標陣列的區別Golang陣列指標
- 陣列指標陣列指標
- C陣列和指標陣列指標
- C語言 指標與陣列C語言指標陣列
- 【C進階】28、指標和陣列分析指標陣列
- 【C】 28_指標和陣列分析(上)指標陣列
- c語言-運算子,陣列,指標C語言陣列指標
- C語言指標和陣列筆試題C語言指標陣列筆試
- 透過指標引用陣列指標陣列
- 二維陣列與指標陣列指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 日常學習儲存--陣列和指標陣列指標
- 指標陣列練習排列字串指標陣列字串
- C指標和陣列的關係詳解指標陣列
- c程式設計--指標與陣列C程式程式設計指標陣列
- 陣列,函式與指標 詳解陣列函式指標
- 二維陣列的指標的理解陣列指標
- 【原創】淺談指標(九)二維陣列和多級指標相關指標陣列
- C語言 第 7 節 如何將字串指標指向的內容賦值給陣列C語言字串指標賦值陣列
- 要點1:指標、陣列和複合字面量指標陣列
- C++語言程式設計筆記 - 第6章 - 陣列、指標與字串C++程式設計筆記陣列指標字串
- 雙指標查詢陣列的連續規律子陣列問題指標陣列
- C----陣列越界問題、指標入門陣列指標
- 關於二維陣列指標的問題陣列指標
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- LeetCode合併兩個有序陣列(逆向雙指標)LeetCode陣列指標
- 3-6指標與陣列的天生姻緣指標陣列
- hdu 1277 AC自動機入門(指標版和陣列版)指標陣列
- C語言系列之 指標與陣列總複習視訊教程C語言指標陣列
- C語言使用指標對陣列指定位置進行插入元素C語言指標陣列
- 陣列常用方法補充陣列
- 物聯網學習教程— 多維陣列與指標陣列指標
- 資料結構與演算法基礎之指標和陣列資料結構演算法指標陣列