C語言 指標 從入門到精通

2021-10-02 23:35:15 字數 1725 閱讀 8576

最近在老師在講資料結構,然後發現自己的c指標內容好多都遺忘了,在此做了個總結,趁機鞏固下c語言的知識。

基本知識點歸納:

指標就是位址,位址就是指標。

指標變數就是存放位址的變數。

如果乙個指標變數指向乙個普通變數,則 *指標變數 就完全等普通變數。

位址就是記憶體單元的編號。

指標變數就是存放位址的變數

指標是乙個操作受限的非負整數(只能減,不能加、乘除)

# include

void

main()

常見錯誤:

指標變數未初始化,導致修改記憶體中的其他值。

# include

intmain

(void)/*

將3賦值給以p的內容為位址的空間內,修改了p記憶體中儲存位址的資料的值,這個位址並未申請,不能修改。

*/

位址錯誤

# include

intmain

(void

)

經典例題,兩數值相互轉換(形式引數如何改變主函式的引數的值)

# include

void

switch_ab

(int

*p,int

*q)void

main

(void

)

基本知識點:

一維陣列名就是乙個 指標常量,切記是指標常量而不是指標變數。

一維陣列名存放的是一維陣列第乙個元素的位址

指標與陣列下標的關係:如果p為乙個指標則p[i] == (等價於)*(p+i)

指標運算法則:只能相減(如果兩個指標指向的為同一塊連續的區域),不能加乘除。

# include

intmain()

; p=array_list;

//一維陣列名就是個指標常量型別為 int *型別

printf

("%p\n"

,p);

printf

("%p\n"

,array_list);/*

一維陣列名存放的是一維陣列第乙個元素的位址

*/printf

("****************************\n");

printf

("*p = %d\n"

,*p)

;printf

("array_list[0] = %d\n"

,array_list[0]

);printf

("*******************************\n");

printf

("*(p+2) = %d,a[2] = %d\n",*

(p+2

),array_list[2]

);額 /*

指標與陣列下標的關係:如果p為乙個指標則p[i] == (等價於)*(p+i)

*/return0;

}

指標變數所佔的位元組數(固定值)

乙個指標變數無論他指向的變數所佔幾個位元組,該指標變數本身只佔四個位元組。

# include

intmain()

C語言 結構體從入門到精通

最近老師在講解資料結構的內容,當老師講資料結構的 時,經常用到結構體這個東西,趁機複習下結構體的內容。結構體的定義 把一些基本型別的資料組合在一起而形成的乙個新的複合型的資料型別,這個就叫做結構體。為什麼需要結構體 為了表示一些複雜的事物,而基本的資料型別無法滿足相應的請求。結構體的一般形式 申明乙...

Go從入門到精通 指標

指標概念在 go 語言中被拆分成為兩個核心概念 c c 中指標飽受詬病的根本原因是指標運算和記憶體釋放。c c 語言中的裸指標可以自由偏移 甚至可以在某些情況下偏移進入作業系統核心區域。我們計算機作業系統經常需要更新 修復漏洞的本質,是為解決指標越界訪問所導致的 緩衝區溢位 同時指標又是c c 語言...

C語言指標教程 入門到精通《一》

一 指標是什麼?指標也是乙個變數,但是這個變數儲存的是乙個位址,指向乙個儲存單元。我們可以根據指標 位址 找到他所指的變數,並對這個變數進行操作 賦值等 通過c裡面的取位址符號 和取所指內容的符號 可以很方便的表示指標以及指標所指的變數之間的關係。二 為什麼要用指標?為什麼要用指標?指標能夠帶來哪些...