指標與陣列

陣列可以當成指標的分身

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

陣列有個很巧的設計
陣列名稱本身就是個存放位址的指標常數
恆指向陣列的位置
至於為什麼不是指標變數
因為我們無法改變陣列指標的指向
陣列的第一個元素位址即代表陣列的位址
陣列名稱的位址即是它本身所存放的位址
Ex:
#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; 
  
 }
 
 
}
由於陣列名稱是指標常數
所以沒辦法經由增加其值來改動它
只能再設定一個指標變數指向它
並經由操控指標變數
來獲取陣列元素內容
Ex:
#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; 
 
 
}
存取陣列內元素
知道指標跟陣列的關係後
用一個範例展示如何用指標存取陣列元素
Ex:
#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;
 
}

有疑問? 留個言吧!

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