C++指向陣列元素的指標 | 用指標輸出陣列中的10個數
阿新 • • 發佈:2020-12-16
C++指向陣列元素的指標
在C++中,一個變數有地址,一個數組包含若干元素,每個陣列元素都在記憶體中佔用儲存單元,它們都有相應的地址;指標變數既然可以指向變數,也可以指向陣列元素,所謂陣列元素的指標就是陣列元素的地址。
定義一個整型陣列array,它有10個元素:
int array[10];
定義一個基型別為整型的指標變數p:
int *p;
將元素array[0]的地址賦給指標變數p,使p指向array[0]:
p=&array[0];
和C語言一樣,在C++中,陣列名代表陣列中第一個元素的地址,因此也可以這樣寫:
p=&array[ 0];
p=array;
在定義指標變數時可以直接賦初值,p的初值為array[0]的地址:
int *p=&array[0];
同樣,也可以寫成:
int *p=array;
可以通過指標引用陣列元素,假設p已定義為一個 基型別為整型的指標變數,並已將一個整型陣列元 素的地址賦給了它,使它指向某一個數組元素。
如果指標變數p已指向陣列中的一個元素,則p+1指向同一陣列中的下一個元素,p+i和array+i就是array[i]的地址,或者說,它們指向array陣列的第i個元素。
(p+i)或(array+i)是p+i或array+i所指向的陣列元素,即array[i],可以看出,[]實際上是變址運算子。對array[i]的求解過程是: 先按array+i×d計算陣列元素的地址,然後找出此地址所指向的單元中的值。
指向陣列元素的指標變數也可以帶下標,如p[i] 與* (p+i) 等價,引用一個數組元素,可用以下方法:
下標法,如array[i]形式
指標法,如*(a+i)或*(p+i)。
其中array是陣列名,p是指向陣列元素的指標變數。
經典案例:C++輸出陣列中的10個元素。
#include<iostream>//預處理
using namespace std;//名稱空間
int main()//主函式
{
int array[10];//定義整型陣列
int i;//定義整型變數
int *p=array;//定義指標變數,指標變數p指向陣列array的首元素
for(i=0;i< 10;i++)//for迴圈鍵盤輸入10個數
{
cin>>*(p+i);
}
cout<<"輸出結果:"<<endl;//提示語句
for(p=array;p<(array+10);p++)
{
cout<<*p<<" ";//p先後指向array[0]-array[10]
}
cout<<endl;//換行
return 0; //函式返回值為0;
}
執行以上程式會輸出:
2 3 5 6 1 4 5 8 9 4
輸出結果:
2 3 5 6 1 4 5 8 9 4
--------------------------------
Process exited after 27.55 seconds with return value 0
請按任意鍵繼續. . .
更多案例可以go公眾號:C語言入門到精通