C和指針----指針基礎2

指針變量的引用

⑴直接訪問:直接按變量名訪問的方式;

   間接訪訪問:通過另一變量找到原變量的地址從而訪問原變量的方式。

⑵*爲指針運算符或“間接訪問”運算符,*p表示指針變量p指向的對象

⑶在指針變量的引用過程中,容易出現很多錯誤,以交換兩變量的值爲例,如下:

void swap1(int a,int b)
{
    int temp;   //定義一個整形變量,未傳指針,不能改變實參的值。錯誤
    temp = a;
    a = b;
    b = temp;
}
void swap2(int *p,int *q)
{
    int *temp = p;    //p的地址賦給指針變量temp
    p = q;            //交換了兩個指針變量,相當於只換了門牌號。錯誤
    q = temp; 
}
void  swap3(int *p,int *q)
{
     int *temp;       //*temp未初始化,爲野指針(懸掛指針),地址存在,訪問不了。錯誤
     *temp = *p;
     *p = *q;
     *q = *temp;
}

以上寫法都是容易出現的錯誤寫法,正確寫法如下:

void  swap(int *p,int *q)
{
    int temp = *p; 
    *p = *q;
    *q = temp;
}

int main()
{
    int a = 10;              //a,b爲實際參數
    int b = 20;
    swap(&a,&b);          //被調用的函數
    printf("a = %d,b = %d\n",a,b);
    return 0;
}

我們發現,在父函數調用子函數時,子函數要想影響父函數,必須有①傳指針、②解引用。  二者缺一不可。

⑷NULL:空指針,標識當前指針爲無效指針

c語言和c++中,null並不統一。在c語言中null表示指向0的空指針,而c++中,null就直接相當於0了。

 

 

 

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