C語言數組指標(指向數組的指標)

來源:互聯網
上載者:User

標籤:[1]   htm   中序   關於   stream   組成   資料   相同   結果   

注意:數組指標的定義,與指標數組的區別

轉載:http://c.biancheng.net/cpp/biancheng/view/162.html

指向多維陣列元素的指標變數


① 指向數組元素的指標變數
【例6.7】輸出二維數組各元素的值。這裡採用的方法是用基底類型為整型的指標變數先後指向各元素,逐個輸出它們的值。

#include <iostream>using namespace std;int main( ){    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};    int *p;                              //p是基底類型為整型的指標變數    for(p=a[0];p<a[0]+12;p++)        cout<<*p<<" ";    cout<<endl;    return 0;}

 

運行結果如下:
1 3 5 7 9 11 13 15 17 19 21 23

關於指向數組元素的指標變數的幾點說明:

  • p是指向整型資料的指標變數,在for語句中對p賦初值a[0],也可以寫成“p=&a[0][0]”。
  • 迴圈結束的條件是“p<a[0]+12”,只要滿足p<a[0]+12,就繼續執行迴圈體。
  • 執行“cout<<*p;”輸出p當前所指的列元素的值,然後執行p++,使p指向下一個列元素。


②指向由m個元素組成的一維數組的指標變數
可以定義一個指標變數,它不是指向一個整型元素,而是指向一個包含m個元素的一維數組。這時,如果指標變數p先指向a[0](即p=&a[0]),則p+1不是指向a[0][1],而是指向a[1],p的增值以一維數組的長度為單位,見圖6.17。


圖6.17


【例6.8】輸出二維數組任一行任一列元素的值。

#include <iostream>using namespace std;int main( ){    int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};    int (*p)[4],i,j;    cin>>i>>j;    p=a;    cout<<*(*(p+i)+j)<<endl;    return 0;}

 

運行情況如下:
2 3
23

由於執行了“p=a”,使p指向a[0]。因此p+2是二維數組a中序號為2的行的起始地址(由於p是指向一維數組的指標變數,因此p加1,就指向下一個一維數組),見圖6.18。*(p+2)+3是a數組2行3列元素地址。*(*(p+2)+3)是a[2][3]的值。


圖6.18


3) 用指向數組的指標作函數參數
一維數組名可以作為函數參數傳遞,多維陣列名也可作函數參數傳遞。

【例6.9】輸出二維數組各元素的值。題目與例6.7相同,但本題用一個函數實現輸出,用多維陣列名作函數參數。

#include <iostream>using namespace std;int main( ){    void output(int (*p)[4]);  //函式宣告     int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};    output(a);  //多維陣列名作函數參數    return 0;}void output(int (*p)[4])  //形參是指向一維數組的指標變數{    int i,j;    for(i=0;i<3;i++)        for(j=0;j<4;j++)            cout<<*(*(p+i)+j)<<" ";    cout<<endl;}

  

運行情況如下:
1 3 5 7 9 11 13 15 17 19 21 23

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.