C-數組與指標

來源:互聯網
上載者:User

標籤:c   指標   數組   

總結一些C語言中關於數組和指標的關係。

1、"[]" 運算。下標運算"[]"實際上是由另一個運算定義的。C語言規定下面兩個運算式 運算式1[運算式2] 與 ( *( (運算式1)+(運算式2) ) )

是完全等價的。由於"+"具有交換性,故 運算式1[運算式2]   與 運算式2[運算式1]完全等價,例如 int i[1] = 7; i[0] = 0[i] = 7。

2、數組名是指標,指向數組第一個元素,是常量。  double  d [6] = {2}; "d[0]" 等價於 "( *( (d)+(0) ) )" ,也就等價於"*d",而"*"做一元運算子時運算對象是指標,故 "d"是一個 "int *"類型的指標,數組名是指標。

3、數組名不僅僅是指標,也代表數組所佔據的那塊記憶體



4、指向數組的指標。對於數組,由於數組名也可以代表數組所佔據的記憶體,所以也可以由數組名得到數組的指標。int a[20];

"a" 與"&a"都是指標常量,值相同,但是資料類型不同。"a"是 "int *"類型指標,加1意味著在數值上加上 "sizeof (int)",而"&a"是 指向一個 "int [20]"這樣的數組,因而加1意味著加上 ”sizeof(int [20])"。

5、與數組名對應的形參。在用數組名做實參時,形參對應的資料類型可以用不完全類型描述,實際上是一種指標類型。int a[10],a做實參時,形參類型應該是 int  [] 即 int *。

6、高維數組名是指標。如 int a[2][3]; a是指向一個由3個 int類型資料構成的一維數組的指標(int (*) [3]),即a[0] 。注意 與int * [3]不同,int * [3]是定義一個數組,數組元素為int類型指標。注意a 與&a 加1結果是不同的,類似一維數組。

7、高維數組名是記憶體,二維數組所佔據的那塊記憶體。


參考資料:狂人C-程式員入門必備(關於指標的章節)

C-數組與指標

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.