1.認識指針的一些基本性質
通過下面幾段代碼了解指針操作指定變量的一些基礎性質。
執行個體
#include<stdio.h>
int main()
{
int a = 2 ;
int* p = &a;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
*p = 4;
printf("%d\n", a);
printf("%p\n", &a);
printf("%p\n", p);
return 0;
}
結果
2
000000E0F719F554 //位址是由十六進制顯示
000000E0F719F554
4
000000E0F719F554
000000E0F719F554
在主程式中,我們首先設定了一個整型變量a,随後将2存儲于該變量内,随後我們設定了一個指針變量p,用以對a進行操作。
我們列印出a的值/a的位址/指針p指向的位址
可以得出指針的一個基本性質:指針變量實際上就是一個存儲原變量位址的變量。在列印指針變量的位址時,指針會直接指向原變量的位址,而非指針變量自身的位址,這是因為指針變量的存儲位置是一個特殊的工作區,指針此時類似于一種快捷方式,它的所有性質總會直接指向原變量。
現在,我們通過解引用指針p,将整型4存儲在變量a的位址,列印後我們可以看到,解引用直接幫助我們找到原變量的存儲位址,随後将新的數值放了進去。
以上可以了解為,我們通過拿出抽屜裡的房間号牌,将已經預定的房間内裡原來存放的東西清理掉,随後放入新的東西。這個過程我就不需要去了解我原來叫這個房間是a還是b或是其他名字了,我隻需要直接拿着号牌找到該房間即可。
執行個體2
#include<stdio.h>
int main()
{
double a = 1.34;
double* pa = &a;
printf("%d", sizeof(pa));
return 0;
}
結果
8
我們設定了一個double類型的變量,向記憶體申請了8個字元存儲3.14随後我們設定了一個double類型的指針變量pa,用來指向該變量,我們嘗試列印pa指向的a變量所申請的記憶體大小,結果顯然是整型數8,因為指針變量的性質隻指向原變量。