C語言學習筆記 指標基礎

2021-10-09 10:11:17 字數 1269 閱讀 6032

在程式中使用的變數,常量,甚至函式等資料都會被載入到記憶體,而在記憶體中每乙個位元組都會有乙個位址位對應,指標變數就是用來儲存這些位址的變數

c語言中,定義變數時,在變數名 前 寫乙個 * 星號,這個變數就變成了對應變數型別的指標變數,指標變數因其所佔記憶體不同也分多種型別,此特性在指標運算時顯得尤為重要,示例**如下:

//指標型別 *指標名稱

int*p_int;

//整型型別的指標

double

*p_double;

//double 型的指標

float

*p_float;

//浮點型的指標

char

*p_char;

//字元型的指標

如下**,我們在定義指標變數的同時將變數 a 的位址賦予它,此時 p 就指向了 a。因為指標變數儲存的是乙個位址,所以p 需要的乙個位址,而a 的前面必須要加取位址符&,因為指標變數也是一種型別的變數,所以在命名時也要單獨命名,不能與普通變數重名,否則會出現錯誤:

//指標賦值

int a =1;

int*p =

&a;

和普通變數一樣,指標變數也可以被修改:

//定義普通變數

int a =

1,b=2;

//定義指標變數並賦值

int*p =

&a;//修改指標變數的值

p=&b;

注:在上述**中*是乙個特殊符號,表明乙個變數是指標變數,定義指標時必須帶

在修改指標變數的值時,因為已經知道了它是乙個指標變數,就沒必要多此一舉再帶上*,後邊可以像使用普通變數一樣來使用指標變數。

也就是說,定義指標變數時必須帶*,給指標變數賦值時不能帶*。

#include

intmain()

執行結果如下圖:

通過執行結果我們可以看出來,a與 *p所列印出的資料相同,而p列印出的是一串數字(此數字為位址位,我們也可以用%#x列印,表示以十六進製制形式輸出,並附帶字首0x,來檢視此串數字代表的位址)

這是因為變數p本身記錄的是變數a所在的位址,而 *p指的是變數p儲存的位址上的內容,這裡的 *稱為指標運算子,用來取得某個位址上的資料

C語言學習筆記 指標

若觸過組合語言,那麼理解學習c語言中指標就很簡單了。指標,在彙編裡面的表現形式,無非就是定址,直接定址和間接定址。先來學習下,c語言中的4大類資料型別 基本型別 int,long,float,char 構造型別 陣列,結構體 struct,聯合體 union,列舉型別 enum 指標型別 int l...

C語言學習筆記 指標

c語言要玩的好,指標是核心,但是指標在學習的時候看教程往往感覺一看就明白,但是實際用的時候一用就錯,而且還不知道錯在哪。為了更加深刻的了解指標,將學習過程記錄下來,依次加深對指標的理解。先看看一段測試 void fun void int main void 定義乙個變數a,值為100,然後定義乙個一...

C語言學習筆記 指標

get新知識 1 指向二維陣列的指標,如指向int a 3 4 的指標int p 4 p指的是第0行第乙個位址 注意是位址 p 1 指的是第1行第乙個位址,以此類推 p i j 表示第i行第j列的元素。二維陣列本質也是一維陣列。每一行相當於乙個元素。2 指向函式的指標 作用 可以作為另乙個函式的引數...