關於指針:
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;
}
通過指針,子函數可以操縱上一級函數的變量。