C Primer Plus(九) -3指針簡介

關於指針:
1.地址運算符:&
用來讀變量的地址

scanf("%d",&a);

這條語句說:函數在一開始定義了一個變量a,並在內存中賦了值。
當鍵盤輸入了一個數,這條語句就會尋找這個變量在內存中的地址,並賦值。
2.簡介:
一般來講:指針是指一個其數值爲地址的變量。

char p;
char * fp;
fp = &p; //p在這裏指的是一個變量,fp則是一個常量,這個常量的值爲p的內存地址。
間接運算符(也叫取值運算符)*:用來獲取常量fp爲地址的變量的值。
char a;
char * fa;
char b;
fa = &a;
b = *fa;
//在這裏,b == a;
//fa得到變量a的地址,*fa就把fa爲地址的變量取出來,賦值給b。
//所以a == b;
指針聲明:

並不是我們所想的那樣簡單:
pointer ptr;
因爲指針指向變量的地址,變量的類型多樣,因而指針的類型也應與變量類型一樣纔對。
所以:

int *fp;
char *fa;
float *ff;

類型標識符表明被指向變量的類型,* 表示該變量爲一個指針。
eg:交換兩個數:


void change(int *,int * );

int main(void){

    int a = 1,b = 2;

    change(&a,&b);

    printf("%d %d",a,b);

    return 0;
}

void change (int * a,int *  b){

    int temp = 0;

    temp = *a;

    *a = *b;
    *b = temp;
} 

通過指針,子函數可以操縱上一級函數的變量。

發佈了42 篇原創文章 · 獲贊 28 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章