手把手入門C語言 C語言指標

2021-10-04 09:50:23 字數 2827 閱讀 5743

指標的長度

指標初步練習

指標的賦值練習

加深指標的理解

總**1、指標用於存放位址

2、列印值*p

3、加深理解指標實驗*p=123

指標的長度:列印各種指標的長度,所有指標的長度為4個位元組

#include

#include

/** 指標的長度 是4個位元組(能夠傳任何型別的位址)

*/main()

四個小實驗 int i = 123;int* p; p = &i;

理解指標

1、指標和指標變數的關係

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

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

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

指標和指標變數是兩個不同的概念

但是要注意: 通常我們敘述時會把指標變數簡稱為指標,實際它們含義並不一樣

指標裡存的是100, 指標: 位址–具體

指標裡存的是位址, 指標: 指標變數 – 可變

2、為什麼要使用指標

指標的重要性

直接訪問硬體 (opengl 顯示卡繪圖)

快速傳遞資料(指標表示位址)

返回乙個以上的值(返回乙個陣列或者結構體的指標)

表示複雜的資料結構(結構體)

方便處理字串

指標有助於理解物件導向

3、*號的三種含義

*號的含義

數**算符: 3 * 5

定義指標變數: int* p;

指標運算子(取值): *p (取p的內容(位址)在記憶體中的值)

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

新增如下**:*p = 100; // 賦值

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

如圖可理解為:

當通過知道記憶體位址的值之後修改它的值時會直接跳出迴圈

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

// 當通過知道記憶體位址的值之後修改它的值時會直接跳出迴圈

printf

("恭喜您,完成了遊戲!\n");

第乙個實驗: 如果修改 i 值, p值有變化嗎?

當我們在次列印p的值時,雖然i的值變為200了,但是是列印p的值,列印p的值與i的值(100,200),沒有關係。

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

如圖分析:

第二個實驗: 如果修改 p 值, i值有變化嗎?

當執行完p = &j;時p的位址值變了,但是i的值沒有變化

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

如圖分析:

第三個實驗: 如果修改 i 值, *p值有變化嗎?

#include

#include

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

如圖分析:

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

如圖分析:

/** 指標就是記憶體位址

記憶體位址就是指標

*/main()

手把手入門C語言 列舉

列舉中的變數是遞增的 預設是0開始 首元素的值是0 include include 列舉中的變數是遞增的 預設是0開始 首元素的值是0 定義乙個列舉 enum weekday main 測試列舉中的變數是遞增的 修改下面的 monday 0,tuesday,wednesday,thursday,fr...

C語言 指標高階 《手把手教你學C語言》

3.多級指標 3.2通過指標引用二維陣列 4.函式指標 對於普通的陣列,其一大缺點就一旦定義以後就無法改變其大小容量。這其實本質上是靜態記憶體的缺陷。靜態記憶體 對於系統分配的記憶體就是靜態記憶體也叫棧記憶體,比如定義的變數,函式等等都是由系統進行記憶體的分配。因而程式設計師自己無法靈活對其進行更改...

手把手入門C語言 靜態記憶體分配

特點 靜態記憶體是程式編譯執行後系統自動分配,由系統自動釋放,靜態記憶體是棧分配的 靜態記憶體分配由系統分配 由系統 把一級指標傳遞過去,二級指標能夠接收一級指標的位址 在main方法定義一級指標,但是賦值是在func方法賦值 include include 在main方法定義一級指標,但是賦值是在...