為什麼要使用指標
我們首先引入乙個例子:
#include
#include
intmain()
a的位址是系統隨機分配的那麼我們如果想要把資料儲存在指定位址呢?
#include
#include
intmain()
另外假若我們通過編寫乙個函式要交換兩個資料「」
#include
#include
void
swap
(int a,
int b)
intmain()
我們觀察是否能夠實現交換
結果是否定的,那我們再換一種方式呢?
#include
#include
void
swap
(int
*a,int
*b)int
main()
結果:
為什麼呢?我們在引入乙個例子:
#include
#include
void
jiajiaa
(int a)
int main (
) system (
"pause");
return
0;
我們觀察自定義函式和主函式中的結果是否一致:
顯而易見不一致,那我們在這裡說以下記憶體的過程:
假設我們有一棟樓,我們在三樓某個房間裡存放著主函式裡的a=10, 那我們知道函式呼叫以後被呼叫的時候形參才存在,雖然兩個都是a,但是在記憶體中是兩碼事,也就是說在其他房間也有乙個a = 10(假設在第四層某個房間),函式呼叫的時候就是用的第四層的a進行計算,而對於主函式,呼叫的仍是第三層的a,函授呼叫以後第四層的a就不存在了,第三層的a從頭到尾都沒沒有動過。
那麼我們怎麼才能改變第三層的值呢:
#include
#include
void
jiajiaa
(int
*p)int main (
) system (
"pause");
return
0;
我們再看結果:
我們再來解析:
#include
#include
void
jiajiaa
(int
*p)//定義指標p
int main (
) system (
"pause");
return
0;
呼叫結束以後p不存在了,a的值也發生了改變。 c語言學習筆記(十四 指標二
1.指標的算術運算char a 20 int ptr int a 強制型別轉換並不會改變a 的型別 ptr 指標ptr 的值加上了sizeof int 由於位址是用位元組做單位的,故ptr 所指向的位址由原來的變數a 的位址向高位址方向增加了4 個位元組。2.和 這裡 是取位址運算子,是間接運算子。...
C語言學習筆記 指標
若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...
C語言學習筆記 指標
c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...