指標(三)————指標與陣列
阿新 • • 發佈:2018-11-14
指標與陣列
指標和陣列是密切相關的。事實上,指標和陣列在很多情況下是可以互換的。例如,一個指向陣列開頭的指標,可以通過使用指標的算術運算或陣列索引來訪問陣列。
#include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200};//這裡var是一個數組,陣列本質上是一個指標,指向陣列的第一個元素的地址, for (int i = 0; i < MAX; i++) { *var = i; // 對var進行取值,並且因為var是一個指標,相當於賦予這個地址的值為i } *(var + 2) = 500;//將var[2]的值賦值為500 //var++;//這樣寫就是錯誤的,因為var是一個指向陣列開頭的常量,不能改變其值 for (int j = 0; j < MAX; j++) { cout<<var[j]<<endl; } return 0; }
輸出
2 //可以看出,var為陣列中的第一個元素的地址,這裡只能改變第一個元素的值,其他的位置的值無改變
100
500
請按任意鍵繼續. . .
指標陣列
可能有一種情況,我們想要陣列儲存指向int或char或其他資料型別的指標。下面是一個指向整數的指標陣列的宣告。
int *ptr[5]
此處,把ptr宣告為一個數組,由5個元素,每個元素都是一個指向int值的指標,
#include <iostream> using namespace std; const int MAX = 3; int main () { int var[MAX] = {10, 100, 200}; int *ptr[MAX]; for (int i = 0; i < MAX; i++) { ptr[i] = &var[i]; // 賦值為整數的地址 } for (int i = 0; i < MAX; i++) { cout << "Value of var[" << i << "] = "; cout << ptr[i] << endl; cout <<"這個位置原來儲存的值為" <<*ptr[i] << endl; *ptr[i]+=1; cout <<"這個位置+1被改變後的值為" <<*ptr[i] << endl; } cout <<"通過指標的作用,成功將陣列的每個元素的值做了改變"<<endl ; for (int i = 0; i < MAX; i++) { cout << var[i]<<endl; } return 0; }
執行結果
Value of var[0] = 008FFD04
這個位置原來儲存的值為10
這個位置+1被改變後的值為11
Value of var[1] = 008FFD08
這個位置原來儲存的值為100
這個位置+1被改變後的值為101
Value of var[2] = 008FFD0C
這個位置原來儲存的值為200
這個位置+1被改變後的值為201
通過指標的作用,成功將陣列的每個元素的值做了改變
11
101
201
請按任意鍵繼續. . .