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語言程序設計》