一、指標:是儲存位址的特殊變數
位址:記憶體上的位置,大多是16進位,如0x1004,0x1000,若要知道變數的記憶體位址,可用位址運算子(&)
例如:int a=5;
cout<<&a; //顯示a的記憶體位址
二、指標的使用
宣告
型態 *指標名稱;
int *P; //有一個指標P可儲存int型態變數的位址
使用-指標的內容必須是位址
int a=5;
int *P;
P=&a;
用指標來顯示變數的值
int a=5;
int *P;
P=&a; //P指向a
cout<<*P; //顯示該位址處的內容,也就是a的值
使用指標來變更變數的值
int a=5;
int *P;
P=&a;
*P=50; //P所指的位址處內容被改為50 即a=50
cout<<a;
把指標當作函數的參數
比較以下兩個程式的差異
#include <iostream>
using namespace std;
void swap(int x,int y){
int tmp;
tmp=x;
x=y;
y=tmp;
}
int main(){
int n1=5,n2=10;
swap(n1,n2); //傳值呼叫
cout<<"n1="<<n1<<",n2="<<n2;
}
#include <iostream>
using namespace std;
void swap(int *x,int *y){
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
int main(){
int n1=5,n2=10;
swap(&n1,&n2); //傳址呼叫
cout<<"n1="<<n1<<",n2="<<n2;
}
作業:輸入多數字之後,將所有數字兩兩一組反轉
參考答案
#include <iostream>
using namespace std;
void swap(int *x,int *y){
int tmp;
tmp=*x;
*x=*y;
*y=tmp;
}
int main(){
cout<<"20601楊素菀"<<endl;
int n;
cout<<"請輸入資料數(偶數):";
cin>>n;
int test[n];
cout<<"請輸入"<<n<<"個整數";
for(int i=0;i<n;i++){
cin>>test[i];
}
for(int i=0;i<n;i=i+2){
swap(&test[i],&test[i+1]);
}
cout<<"資料反轉:";
for(int i=0;i<n;i++)
cout<<test[i]<<"\t";
}