一、資料的位址和通過位址訪問資料
1、基本的資料型別的位址
int a;==>&a//變數a的位址
2、陣列的位址
int a[5]; ==>&a,a,&a[0]
3、函式的入口位址
函式名 或者 &函式名
4、通過位址去訪問記憶體中的資料
通過間接訪問運算子*訪問記憶體中的資料
二、指標的基本概念
1、定義:
變數的位址稱為變數的指標。
存放指標的變數稱為指標變數,指標也是乙個變數,它儲存其他變數的位址。
【注意】每個指標變數只能指向一種特定型別的變數。
2、宣告和初始化、賦值
詳見4.c
3、使用指標訪問記憶體單元
指標前面加*,表示指標所指向的記憶體單元
4、指標變數的大小(占用記憶體空間的大小)
與指標所指向的資料型別的大小沒有關係,與作業系統的位數有關係。
指標是乙個無符號整數。
5、void 指標
void *p:通用指標,代表可以指向任意型別。
【注】使用指標訪問記憶體的方法
1、指標在宣告和賦值的時候一定要正確,明確指標到底指向誰。
2、根據指標的指向關係,畫出記憶體單元圖,找出指標所指向的記憶體單元。
三、指標與陣列(掌握)
陣列名代表陣列中第乙個元素的位址,可以將陣列名賦值給與其相同資料型別的指標。
使用陣列名訪問陣列,與使用這個指標訪問陣列,效果一樣。
四、指標與函式(掌握)
1、指標作為函式的引數,傳遞的是位址,通過位址間接訪問記憶體單元,可以修改指定的記憶體單元。
練習:1、使用函式交換兩個整型變數,呼叫函式結束後,兩個 整型變數的值真的交換了。
2、寫乙個函式sumandminus,可以同時計算2個整型變數的和與差,函式執行完畢之後,返回和與差。
參見11.c
2、陣列作為函式的引數
陣列作為函式引數,實際上需要傳遞陣列首位址,即這個引數是指標型別。
3、指標作為函式的返回值
參加13.c
五、【擴充套件】指標的運算(了解)
詳見14.c
1、加加1:加上指向的資料型別的大小。
兩個指標相加:無意義。
2、減減1:減去指向的資料型別的大小
兩個指標相減:表示兩個指標所指向的變數之間相差的元素個數(常常用在陣列中)
3、比較
兩個指標的比較,實際上是兩個指標所指向的變數的位址進行比較(兩個指標所指向的資料型別必須相同,否則比較無意義)。
六、【擴充套件】const修飾的指標(了解)
詳見15.c
1、const關鍵字
常量 (1)const 資料型別 變數名=變數初值;
(2)資料型別 const 變數名=變數初值;
【注】常量在宣告的同時必須初始化,否則無意義。
2、const修飾指標
(1)const int *a;和int const *a;
a的指向可以修改; a指向的內容不能修改
(2)int *const a;
a的指向不能修改; a指向的內容可以修改
(3)const int * const a;
a的指向不能修改; a指向的內容也不能修改
【注】const 修飾誰,誰不能修改
C語言基礎 指標陣列與陣列指標
一 指標陣列 在這一節中我們來學習乙個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有乙個陣列,這個陣列裡存放的變數型別是指標型變數 說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體位址的變數,所以它們也可以被定義成一串連續的...
C語言基礎 指標與陣列
1.陣列指標 概念 指向陣列元素的指標 作用 使用陣列指標間接訪問陣列的元素 定義 int p 初始化 int a 4 int q a 定義了乙個指標變數q,賦值陣列的首位址 第乙個元素的位址 q指向了陣列的第乙個元素 int q a 0 跟上面等價陣列指標如何去訪問陣列元素 p 1 表示指向陣列的...
C與C 基礎 陣列指標與指標陣列
c與c 基礎 陣列指標與指標陣列 c與c 基礎 結構體struct和typedef struct 區別 c與c 基礎 函式 c與c 基礎 記憶體管理 陣列指標也成為行指標,陣列指標,就是乙個指標,指向乙個一維陣列。定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一...