6.3.1指針運算符與指針表達(dá)式
在C中有兩個關(guān)于指針的運算符:
•&運算符:取地址運算符,&m即是變量m的地址。
•*運算符:指針運算符,*p表示其所指向的變量。
[例6-2]從鍵盤輸入兩個整數(shù),按由大到小的順序輸出。
main()
{
int*p1,*p2,a,b,t;/*定義指針變量與整型變量*/
scanf("%d,%d",&a,&b);
p1=&a;/*使指針變量指向整型變量*/
p2=&b;
if(*p1<*p2)
{/*交換指針變量指向的整型變量*/
t=*p1;
*p1=*p2;
*p2=t;
}
printf("%d,%d\n",a,b);
}
在程序中,當(dāng)執(zhí)行賦值操作p1=&a和p2=&b后,指針實實在在地指向了變量a與b,這時
引用指針*p1與*p2,就代表了變量a與b。
運行程序:
RUN
3,4
4,3
在程序運行過程中,指針與所指的變量之間的關(guān)系如圖6-4所示:
當(dāng)指針被賦值后,其在內(nèi)存的安放如a),當(dāng)數(shù)據(jù)比較后進(jìn)行交換,這時,指針變量與所指向的變量的關(guān)系如b)所示,在程序的運行過程中,指針變量與所指向的變量其指向始終沒變。
下面對程序做修改。
在C中有兩個關(guān)于指針的運算符:
•&運算符:取地址運算符,&m即是變量m的地址。
•*運算符:指針運算符,*p表示其所指向的變量。
[例6-2]從鍵盤輸入兩個整數(shù),按由大到小的順序輸出。
main()
{
int*p1,*p2,a,b,t;/*定義指針變量與整型變量*/
scanf("%d,%d",&a,&b);
p1=&a;/*使指針變量指向整型變量*/
p2=&b;
if(*p1<*p2)
{/*交換指針變量指向的整型變量*/
t=*p1;
*p1=*p2;
*p2=t;
}
printf("%d,%d\n",a,b);
}
在程序中,當(dāng)執(zhí)行賦值操作p1=&a和p2=&b后,指針實實在在地指向了變量a與b,這時
引用指針*p1與*p2,就代表了變量a與b。
運行程序:
RUN
3,4
4,3
在程序運行過程中,指針與所指的變量之間的關(guān)系如圖6-4所示:
當(dāng)指針被賦值后,其在內(nèi)存的安放如a),當(dāng)數(shù)據(jù)比較后進(jìn)行交換,這時,指針變量與所指向的變量的關(guān)系如b)所示,在程序的運行過程中,指針變量與所指向的變量其指向始終沒變。
下面對程序做修改。