C++指標和數組

來源:互聯網
上載者:User

數組的指標即整個數組在記憶體中的起始地址,而數組元素的指標是數組中某一元素所佔儲存單元的地址。

利用指標法引用數組元素能使目標程式品質高、占記憶體少、運行速度快。

C++語言中規定:數組名就代表數組首地址,也就是數組第0號元素的地址。如

int a[10];
int *p;
p=&a[0];/*與p=a,是等價的*/

p+i或a+i就是a[i]元素的儲存地址,即它們都指向數組的第i號元素a[i]。所以*(p+i)或*(a+i)就與a[i]是等價的。實際上,在編譯時間,編譯器把a[i]處理成*(a+i)。因此利用此方法就可訪問到數組元素。如:

main()
{
int a[10];
int *p, i;
for(i=0;i<10;i++)
cin>>a[i];
p=a;
for(i=0;i<10;i++)
cout<<*(p+1);//等價於cout<<a[i];
}

說明:

(1)p++是指向數組元素的下一個元素。

(2)*p++的運算,由於*和++運算級是相同的,且結合特性為自右向左,所以,*p++等同於*(p++),它的作用是先得到p所指向的元素的值(即*p),然後再是p+1。

(3)*(p++)和*(++p)的作用是不同的。

*(p++)是先取p做*運算,然後再使p加1(即指向下一個運算);比如在數組中p指向了第三個元素,那麼就先把第三個元素的值取出來(做*運算),然後再把p指向下一個元素。

*(++p)是先使p加1(即使p指向下一個元素),然後再做*運算。比如在數組中p指向了第三個元素,那麼就先把p指向第四個元素,然後再把第四個元素的值取出來(做*運算)。

(4)(*p)++表示p所指的元素值加1,對上例來說等同於a[0]++。

(5)對於指標的--(自減)運算原理同上。

(6)只有指向數組元素的指標變數才可以進行自加或自減運算。

數組名作函數參數

利用數組名作為函數的參數可以用以下4種方法實現:

(1)形參和實參都用數組名

(2)實參用數組名而形參用指標變數

(3)實參和形參都用指標變數

(4)實參用指標變數,而形參用數組名

指標數組和指向指標的指標

1、指標數組

char* name[3] = {"fortran", "basic", "pascal"};

2、指向指標的指標

char **p;

**p相當於*(*p),說明指標變數p是指向一個字元型指標變數(指向字元型資料的指標變數)的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.