當指針變量被初始化或賦值後,就可以通過指針變量來間接訪問它所指向的變量。C語言中定義了一個間接訪問運算符“*”,通過對指針變量進行*運算,取出指針變量所指向的變量。例如,*p為指針變量p所指向的存儲單元。間接訪問運算符“*”的運算對象是指針表達式,所以又稱為指針運算符。“*”運算符也是一元運算符,與其他的一元運算符有同樣的優先級和從右到左的結合性。
[例102]通過指針變量訪問整型變量。
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)未初始化或賦值的指針變量不能被訪問。
[例103]輸入a和b兩個整數,按先大後小的順序輸出a和b。
voidmain()
{
inta,b,*p1=&a,*p2,*p;
p2=&b;
scanf("%d,%d",&a,&b);
if(a
、>=、