指針學習筆記(1)——運算符*

1.       指針是一個地址,而指針變量時存放地址的變量。

2.       變量的指針就是變量的地址,存放變量地址的變量是指針變量,它用來指向另一個變量。

3.       一個指針變量只能指向同一個類型的變量。

4.       *指針運算符,取指針所指向的對象的內容。

5.       *和&兩個運算符優先級相同,但按自右而左方向結合。

6.       *和++兩個運算符優先級相同,但按自右而左方向結合。 *p++等價於*(p++)

7.       指針變量作爲函數參數,它的作用是將一個變量的地址傳送到另一個函數中。

8.       C語言中實參變量和形參變量之間的數據傳遞是單向的“值傳遞”方式。

9.       不可能通過調用函數來改變實參指針變量的值,但可以改變實參指針變量所指變量的值。

【交換兩個數】

程序一:

void swap(int *p1,int *p2)

{

int temp;

temp=*p1;

*p1=*p2;

*p2=temp;

}

【分析】:通過交換兩個形參指針變量所指向的對象,從而交換傳遞過來的兩個實參指針變量所指向的對象,而實參指針變量所指向對象本身的值並沒有發生改變。程序可實現功能。

程序二:

void swap(int *p1,int *p2)

{

int * temp;

*temp =*p1;

*p1=*p2;

*p2=temp;

}

【分析】:temp中並無確定的值,因此temp所指向的單元也是不可預見的,所以,對*temp賦值很可能給一個存儲着重要數據的存儲單元複製,這樣會破壞系統的正常工作。

程序三:

void swap(int *p1,int *p2)

{

int * p;

p =p1;

p1=p2;

p2=p;

}

程序四:

void swap(int x,int y)

{

int temp;

temp=x;

x=y;

y=temp;

}

【分析】:程序三和程序四表面上看好像不一樣,其實本質是一模一樣的,仔細看筆記中的7 8 9 條就可以知道爲什麼不可以實現兩個數的交換。

《C語言程序設計》


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章