指標

by Welly

聽說指標很難;_;?

指標(位置)

pointer:就是電腦把這個東東儲存在一個地方,而這個地方的地址就是所謂的指標~

 

-->

而他的地址會用一個十六進位制的數字存起來,所以才會看不懂歐~

#include <iostream>

using namespace std;

int main()
{
    int a;
    cout<<&a;

    return 0;
}

//0x61fe1c

等等你誰啊!

取址符'&'

用法:在要求地址的變數前面加上'&'J個符號:D

 

-->

J個東東叫做取址符,在變數前面加這個就可以拿到他的地址了!(等於跟電腦說我要這個東東的地址)

#include <iostream>

using namespace std;

int main()
{
    int a;
    cout<<&a;

    return 0;
}

//0x61fe1c
//再看一次有看懂嗎?

做一次看看:D(3min)

指標變數(指標)

pointer variable:就是拿來存指標(位置(就是剛剛那個!))的變數歐~

 

-->

又叫做存址型態~

像整數變數是拿來存整數的,浮點數變數是拿來存浮點數的,而指標變數就是拿來存指標的:D

(一定要同型態歐!)

#include <iostream>

using namespace std;

int main()
{
    int a;
    int* p;
    p=&a;
    cout<<p;

    return 0;
}

//0x61fe14

好我知道指標變數是甚麼了

所以怎麼用?

指標變數ㄉ長相

記得加星星就歐凱!

長醬歐:

欲求變數指標的型態+'*'+變數名稱

(在供蝦餃!!!)

 

-->

看栗子解釋~

#include <iostream>

using namespace std;

int main()
{
    int a;
    int* p;
    p=&a;
    cout<<p;

    return 0;
}

//0x61fe14

圖解一下:D

做一次看看:D~(3min)

那如果我今天有一個地址

我想要讓電腦告訴我裡面是甚麼ㄋ?

剛剛學過了取址符

不覺得應該也要有一個符號可以做到我們的要求嗎?

取值符'*'

用法:在要求值的指標變數前面加上'*'J個符號

 

-->

J個東東叫做取值符,在指標變數前面加這個就可以拿到裡面存的東東!(等於跟電腦說我要這個地址裡的東東)

#include <iostream>

using namespace std;

int main()
{
    int a=2;
    int* p;
    p=&a;
    cout<<*p;

    return 0;
}

//2

練習一下~(判斷輸出)

#include <iostream>

using namespace std;

int main()
{
    int a=2;
    int* p;
    p=&a;
    cout<<&a<<endl;
    cout<<a<<endl;
    cout<<*a<<endl;
    cout<<p<<endl;
    cout<<*p<<endl;
    cout<<*&a;
    return 0;
}

練習一下~(判斷輸出)

#include <iostream>

using namespace std;

int main()
{
    int a=2;
    int* p;
    p=&a;
    cout<<&a<<endl;
    cout<<*&a<<endl;
    cout<<*a<<endl;
    cout<<p<<endl;
    cout<<*p<<endl;
    cout<<&p;
    return 0;
}

//0x61fe14
//2
//compiler error
//0x61fe14
//2
//0x61fe10

參考(reference)

簡單來說有點像是幫變數娶小明取小名的感覺

用法:

欲取參考的變數型態+'&'+他的小名

(你說得很清楚我聽得很模糊阿阿)

-->

看栗子~

**指標也可以歐~~~:D**

**陣列也可以歐~~~:D**

#include <iostream>

using namespace std;

int main(){
    int a=2;
    
    int *p=&a;
    
    int &r=a;
    
    int *&rp=p;
    
    int num[5]={1,2,3,4,5};
    
    int &ra=num[0];
    
    return 0;
}

意思是他們是同一個人嗎?

那我改參考的值

原本的值會被改到嗎?

會歐!!!

#include <iostream>

using namespace std;

int main(){
    int a=2;
    
    int b=7;
    
    int *p=&a;
    
    int &r=a;
    
    int *&rp=p;
    
    r=3;
    cout<<r<<endl;//3
    cout<<a<<endl;//3
    
    cout<<p<<endl;//0x61fe0c
    
    rp=&b;
    cout<<rp<<endl;//0x61fe08
    cout<<p<<endl;//0x61fe08
    
    return 0;
}

*注意:參考在宣告的時候

就要說他是誰的小名*

練習一下:D(3min)

判斷一下!

#include <iostream>

using namespace std;

int main(){

    int a=2;
    int &r=a;
    int *p=&a;
    int*pr=&r;
    int *&rp=pr;
    cout<<a<<endl;
    cout<<r<<endl;
    cout<<&a<<endl;
    cout<<&r<<endl;
    cout<<pr<<endl;
    cout<<*pr<<endl;
    cout<<rp<<endl;
    cout<<&rp<<endl;
    return 0;
}

判斷一下!

#include <iostream>

using namespace std;

int main(){

    int a=2;
    int &r=a;
    int *p=&a;
    int*pr=&r;
    int *&rp=pr;
    cout<<a<<endl;
    cout<<r<<endl;
    cout<<&a<<endl;
    cout<<&r<<endl;
    cout<<pr<<endl;
    cout<<*pr<<endl;
    cout<<rp<<endl;
    cout<<&rp<<endl;
    return 0;
}
//2
//2
//0x61fe04
//0x61fe04(r的地址就是a的地址 因為r就是a!)
//0x61fe04
//2
//0x61fe04
//0x61fdf8
Made with Slides.com