天天看點

一些簡單的指針操作(day3)

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,因為指針變量的性質隻指向原變量。