1. 程式人生 > >指標的學習和運用

指標的學習和運用

                       指標的學習和運用

一.什麼是指標

      指標就是存放地址的變數當指標指向某個變數,這是這個指標裡就存放了那個變數的地址。

例:

                               p=&a

         當p指向a時,指標p裡就存放了a的地址&a

 


空指標:NULL

指標變數只比普通變數多一個解引用。

例:

int a=100;//定義一個整形變數a值為100

int *p=&a;//指標變數p指向整形變數a

*p=100; //解引用,將100賦值給p當前所指的變數,即將100賦值給a

除錯過程:


 p儲存a的地址


p解引用,*p=a

指標的練習:

int a=10; //定義a的值為10

int b=20;//定義b的值為20

int c=30;//定義c的值為30

int d=40;//定義d的值為40

int *p1=&a;//定義p1指標指向a的地址

int *p2=&b;//定義p2指標指向b的地址

*p1=50;     //解引用:a=50 將原來a的值改為50

*p2=60;    //解引用:b=60 將原來b的值改為60

p1=&d;    //p1指向d的地址

p2=&c;    //p2指向c的地址

*p1=70;    //d=70

*p2=80;   //c=80

p1=&c;      //p1指向c的地址

p2=&d;    //p2指向d的地址

*p1=100;    //c=100

*p2=200;   //d=200

整形地址變數儲存整形地址值,其它同理。

父函式(主函式):呼叫函式,如main函式

子函式:被呼叫的函式

//父函式呼叫子函式,子函式的改變要想影響父函式,如下:

1.傳指標 :  直接將實參的地址進行傳送

 2.解引用:通過對指標的解引用去修改其中的值


指標間的交換:

int tmp;    //在定義空指標時絕對不能寫成int *tmp,否則就為野指標。

tmp=*p1; //以下三行實現的是指標間的交換

*p1=*p2;

*p2=*tmp;



思考題:


此時程式為什麼出錯?

錯在哪裡?