Pointer
by一直想去搭伙署名的某江
指標,也就是位置
是電腦儲存東西的地方,
而這個地方的地址
用文言來說就是指標
#include <iostream>
using namespace std;
int main(){
int a;
cout<<&a;
return 0;
}
//0x7ffde917c584a的地址
Text
顧名思義
是用來取資料的地址的
只要在你想要知道地址的資料前
簡單的加個'&'就可以囉!
#include <iostream>
using namespace std;
int main(){
int a,b;
cout<<&a;//取得a的地址
cout<<"\n";
cout<<&b;//取得b的地址
return 0;
}
//0x7ffc0fc41130
//0x7ffc0fc41134#include <iostream>
using namespace std;
int main(){
int a;
int* p=&a;
cout<<p;
return 0;
}
//0x7ffc7919739c用來儲存指標的變數
也只能儲存指標喔!
int* -> 宣告指標變數
int型態a的位置
也要用int的指標變數
#include <iostream>
using namespace std;
int main(){
int a;
int* p=&a;
cout<<p;
return 0;
}
//0x7ffc7919739c用來儲存指標的變數
也只能儲存指標喔!
int型態a的位置
也要用int的指標變數
int* -> 宣告指標變數
0x7ffc7919739c
指標變數
顧名思義
就是用來取得地址上的資料(數值)
只要在你想取得數值的指標變數前
簡單的加個 ' * ' 就好囉!
#include <iostream>
using namespace std;
int main(){
int a=4;
int* ap = &a;
cout<<*ap;
return 0;
}
//4放在變數型態後
<ex> int* , float*
放在指標變數前
<ex> *ap
順帶一提
更改已取值的指標變數時,原變數的質也會被更改到
#include <iostream>
using namespace std;
int main()
{
int a=2;
int* p=&a;
cout<<a<<endl; //2
*p=5;
cout<<a<<endl; //5
return 0;
}#include <iostream>
using namespace std;
int main(){
int a=2;
int* p=&a;
cout<<a<<endl;
cout<<&a<<endl;
cout<<*a<<endl;
cout<<*&a<<endl;
cout<<p<<endl;
cout<<*p<<endl;
cout<<&p<<endl;
return 0;
}#include <iostream>
using namespace std;
int main(){
int a=2;
int* p=&a;
cout<<a<<endl;
cout<<&a<<endl;
cout<<*a<<endl;
cout<<*&a<<endl;
cout<<p<<endl;
cout<<*p<<endl;
cout<<&p<<endl;
return 0;
}
//2
//0x7ffc7e112b9c
//error
//2
//0x7ffc7e112b9c
//2
//0x7ffc7e112ba0也就是幫變數娶小明
使他擁有另一個名字
指標跟陣列也都可以娶小明喔!
#include <iostream>
using namespace std;
int main(){
int a=2;
int &r=a;
int *p=&a;
int *&rp=p;
cout<<a<<endl;
cout<<r<<endl;
cout<<p<<endl;
cout<<rp<<endl;
return 0;
}
//2
//2
//0x7ffd358c5f1c
//0x7ffd358c5f1c原變數的型態 &小名=原變數;
like右邊
也就是幫變數娶小明
使他擁有另一個名字
指標跟陣列也都可以娶小明喔!
原變數的型態 &小名=原變數;
like右邊
#include <iostream>
using namespace std;
int main(){
int a=2;
int &r=a;
int *p=&a;
int *&rp=p;
cout<<a<<endl;
cout<<r<<endl;
cout<<p<<endl;
cout<<rp<<endl;
return 0;
}
//2
//2
//0x7ffd358c5f1c
//0x7ffd358c5f1c也就代表改變參考的值,原本的值也會被改到喔!
但必須在設定變數時就告訴他那個小名代表的是誰
也就代表他們的位址是一樣的!
#include <iostream>
using namespace std;
int main(){
int a=2;
int &r=a;
int *p=&a;
int *&rp=p;
cout<<a<<" "<<r<<endl; //2 2
r=66666;
cout<<a<<endl; //66666
cout<<r<<endl; //66666
cout<<rp<<" "<<p<<endl; //0x7ffdaa658928 0x7ffdaa658928
cout<<*rp<<" "<<*p<<endl; //66666 66666
int b=9;
rp=&b;
cout<<rp<<endl; //0x7ffdaa65892c
cout<<p<<endl; //0x7ffdaa65892c
cout<<*rp<<endl; //9
cout<<*p<<endl; //9
return 0;
}#include <iostream>
using namespace std;
int main(){
int a=2;
int &r=a;
int *p=&a;
int *&rp=p;
cout<<a<<" "<<r<<endl; //2 2
r=66666;
cout<<a<<endl; //66666
cout<<r<<endl; //66666
cout<<rp<<" "<<p<<endl; //0x7ffdaa658928 0x7ffdaa658928
cout<<*rp<<" "<<*p<<endl; //66666 66666
int b=9;
rp=&b;
cout<<rp<<endl; //0x7ffdaa65892c
cout<<p<<endl; //0x7ffdaa65892c
cout<<*rp<<endl; //9
cout<<*p<<endl; //9
return 0;
}#include <iostream>
using namespace std;
int main(){
int a=3;
int &r=a;
int* p=&a;
int* &rp=p;
cout<<a<<endl;
cout<<r<<endl;
r=6;
cout<<a<<endl;
cout<<rp<<endl;
cout<<*p<<endl;
int b=r;
rp=&b;
cout<<p<<endl;
cout<<*rp<<endl;
return 0;
}#include <iostream>
using namespace std;
int main(){
int a=3;
int &r=a;
int* p=&a;
int* &rp=p;
cout<<a<<endl; //3
cout<<r<<endl; //3
r=6;
cout<<a<<endl; //6
cout<<rp<<endl; //0x7fffcd9d5f48
cout<<*p<<endl; //6
int b=r;
rp=&b;
cout<<p<<endl; //0x7fffcd9d5f4c
cout<<*rp<<endl; //6
return 0;
}現在是痛苦卡戶時間
各位加油(•ˋ _ ˊ•)