指標與陣列

陣列可以當成指標的分身

指標是固定長度的記憶體區塊
指標是變數
陣列元素還可以用指標來存取
讓我們看下去

陣列有個很巧的設計
陣列名稱本身就是個存放位址的指標常數
恆指向陣列的位置
至於為什麼不是指標變數
因為我們無法改變陣列指標的指向
陣列的第一個元素位址即代表陣列的位址
陣列名稱的位址即是它本身所存放的位址
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

int main(){

int a[5];

cout << "陣列名稱a " << a << endl;
cout << "陣列名稱a的位址 " << &a << endl; //陣列名稱a值跟位址相同
cout << endl;
for(int n=0;n<5;n++){ //第一個元素位址跟陣列名稱位址相同

cout << "a[" << n << "]的位址 " << &a[n] << endl;

}

}
[/code]

由於陣列名稱是指標常數
所以沒辦法經由增加其值來改動它
只能再設定一個指標變數指向它
並經由操控指標變數
來獲取陣列元素內容
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

int main(){

int a[5]={5,10,15,20,25};

int* ptr=a; //宣告一個指標變數,並指向a陣列

cout << "a[0]=" << a[0] << " " << "*(a+0)=" << *(a+0) << endl;
cout << "a[1]=" << a[1] << " " << "*(a+1)=" << *(a+1) << endl;
cout << "a[2]=" << a[2] << " " << "*(a+2)=" << *(a+2) << endl;
cout << "a[3]=" << a[3] << " " << "*(a+3)=" << *(a+3) << endl;
cout << "a[4]=" << a[4] << " " << "*(a+4)=" << *(a+4) << endl;

}
[/code]

存取陣列內元素
知道指標跟陣列的關係後
用一個範例展示如何用指標存取陣列元素
Ex:

[code language=”cpp”]
#include <iostream>
using namespace std;

int main(){

int a[5]={5,10,15,20,25};

int* ptr=a; //宣告一個指標變數,並指向a陣列

int sum=0;

for(int n=0;n<5;n++){

sum=sum+*(ptr+n);

}

cout << "sum=" << sum <<span style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" data-mce-type="bookmark" class="mce_SELRES_start"></span>< endl;

}
[/code]

有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料