正文 第29章 指針2(1 / 1)

當指針變量被初始化或賦值後,就可以通過指針變量來間接訪問它所指向的變量。C語言中定義了一個間接訪問運算符“*”,通過對指針變量進行*運算,取出指針變量所指向的變量。例如,*p為指針變量p所指向的存儲單元。間接訪問運算符“*”的運算對象是指針表達式,所以又稱為指針運算符。“*”運算符也是一元運算符,與其他的一元運算符有同樣的優先級和從右到左的結合性。

[例102]通過指針變量訪問整型變量。

voidmain()

inta=100,b=10;

int*p1,*p2;/*此處指針變量定義中的“*”不是運算符*/

p1=&a;/*取變量a的地址賦給p1*/

p2=&b;/*取變量b的地址賦給p2*/

printf("%d,%d\n",a,b);/*直接訪問a和b*/

printf("%d,%d\n",*p1,*p2);/*間接訪問a和b*/

程序運行結果為:

100,10

100,10

說明:

(1)*p1和a等價,*p2和b等價。

(2)a、&a、p1和*p1之間的關係及b、&b、p2和*p2之間的關係。

(3)未初始化或賦值的指針變量不能被訪問。

[例103]輸入a和b兩個整數,按先大後小的順序輸出a和b。

voidmain()

inta,b,*p1=&a,*p2,*p;

p2=&b;

scanf("%d,%d",&a,&b);

if(a

、>=、