C語言高階,什麼是指標?

2021-10-06 23:26:17 字數 1746 閱讀 7395

簡單的來說,指標就是記憶體單元的位址。它可能是變數的位址也可能是陣列的位址,亦或者是函式的入口位址。而儲存位址的變數就是指標變數,通常稱為指標。

再簡單的來說也比較迷吧,舉個例子,去酒店住房間,酒店裡的每個房間會有乙個房間編號是不是,每個房間又有乙個房間名![在這裡插入描述]而你去住酒店的時候,前台會給你乙個房卡,你可以拿著房卡去找到你的房間。來看圖

程式中所使用的任何資料都會在計算機儲存空間中占用一定長度的記憶體空間,計算機的記憶體空間被分成乙個個以位元組為單位的儲存單元。

就好比酒店會被分成乙個個的房間一樣,每個房間就好比是乙個儲存空間,計算機存資料,房間存實物。

為了正確地訪問這些記憶體單元,必須為每個記憶體單元編號,記憶體單元的編號通常被稱為位址。

這就是為什麼要給每個房間編號,就為了來酒店住的人們可以正確的找到自己的房間。

記憶體單元的內容稱為值,也好比入住酒店的使用者資訊。

使用高階語言設計程式的時候,通常會給變數起乙個名字,即識別符號,比如x。通過識別符號(即變數名x)來訪問變數的值,這種訪問方式稱為直接引用。

就好比給予使用者10乙個臨時資訊存放名x一樣。

在c語言中,可以將乙個變數所佔記憶體空間的首位址存放到乙個變數p中,然後通過變數p中儲存的值也就是位址的值找到變數x所占用的記憶體空間,間接的訪問或修改變數x的值,這種方式稱為間接使用。

什麼意思呢?就是說使用者10拿著房卡px可以找到房間60111也就是房間名為x的房間,而這房卡就是中間量,也就是間接的方式。而房卡可以交給使用者10也可以交給使用者11,就是既可以訪問這個房間也可以修改房間x的資訊。

使用指標時需要明確兩個概念,指標物件和指標指向的物件。指標物件是明確命名的指標變數,指標指向的物件是另乙個變數。

有時我們把存有指標值的變數也成為指標,為了不混淆,我們約定指標式常量,指某個具體的物件所佔記憶體空間的首位址,指標變數是指取值為指標值的變數。

乙個指標可以被賦予不同的指標值,即指標變數可以指向不同的物件,但不能同時指向多個物件,因此確定某個指標變數在使用式的指向是非常重要的。

指標變數與其他變數一樣需要先定義在使用

指標變數使用來存放其他資料所占用的儲存空間的首位址,但不同型別的資料所占用的記憶體單元個數是不一樣的,所以定義時要指明該指標變數所指向的資料的資料型別,通過指標變數間接的引用資料時就能知道資料占用的記憶體空間大小。定義指標變數的一般形式

型別識別符號 *變數名;

int

*px;

//定義乙個指向整型資料的指標變數

float

*p1;

//定義乙個指向實型資料的指標變數

char

*p2;

//定義乙個指向字元型別資料的指標變數

//指標變數的賦值

#include

void

main()

執行結果

>>

>x=

5,y=10,

*px=5,

*py=

10>>

>x=

5,y=5,

*px=5,

*py=

5>>

>x=

5,y=20,

*px=5,

*py=

20>>

>x=

5,y=20,

*px=20,

*py=

20

什麼是高階程式語言

在計算機角度,每一種cpu型別都有自己可以識別的一套指令集,計算機不管你這個程式是用什麼語言來編寫的,其最終只認其cpu能夠識別的二進位制指令集。在早期計算機剛發展的時代,人們都是直接輸入01010101這樣的沒有語義的二進位制指令來讓計算機工作的,可讀性幾乎沒有,沒人願意直接編寫那些沒有可讀性 繁...

C語言 高階指標

import import myfunction.h 巨集後面不要加分號 define kimagewidth 200 define kimageheight 200 有引數的巨集 define kmax a,b a b a b 加上括號 define kmul a,b a b define and...

C語言高階指標 1

c語言的指標是c語言這門語言的精華所在,當然也是讓很多人詬病的地方。指標是什麼?有這麼一句話 對於錘子來說,一切都是釘子。那麼換句話講指標,即 對於指標來說,一切都是位址 記憶體是由乙個個記憶體單元構成的,每個記憶體單元都有自己的位址。而指標就是用來存放這些位址的。凡是可以用指標來儲存的變數,在指標...