程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++指針和數組

C++指針和數組

編輯:關於C++

數組的指針即整個數組在內存中的起始地址,而數組元素的指針是數組中某一元素所占存儲單元的地址。

利用指針法引用數組元素能使目標程序質量高、占內存少、運行速度快。

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是指向一個字符型指針變量(指向字符型數據的指針變量)的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved