一、多維指標
一維指標儲存基本變數的位址
二維指標儲存一維指標變數的位址
三維指標儲存二維指標變數的位址
三、指標和陣列的區別
1、空間分配上:陣列是靜態分配的,指標是動態分配的
2、訪問效率上:陣列訪問效率更高,指標訪問效率較低
3、傳參時:接收的形參均是指標
4、安全性:陣列容易造成越界,指標容易導致記憶體洩漏
四、陣列的傳參
傳一維陣列名,用陣列元素的指標來接
傳二維陣列名,用一維陣列的指標來接
傳三維陣列名,用二維陣列的指標來接
傳指標陣列,用指標的指標接
五、野指標的避免
1、當定義乙個指標,且該指標沒有指向時,將其置為空。
2、當要往指標指向的空間賦值時,先看是否給它分配了合法的空間。
六、取值和取位址的區別
int a[1000] = ;
同理:1、對二維陣列的陣列名取位址等於二維陣列的位址。
對二維陣列的位址取值等於首個一維陣列的位址。
2、對三維陣列的陣列名取位址等於三維陣列的位址。
對三維陣列的位址取值等於首個二維陣列的位址。
七、為了加深對陣列的理解,舉乙個三維數字的例子:
*(*(*(a+i)+j)+k):
a+i:第
i+1個二維陣列的位址
*(a+i):第
i+1個二維陣列的首個一維陣列的位址
*(a+i)+j:第
i+1個二維陣列的第
j+1個一維陣列的位址
*(*(a+i)+j):第
i+1個二維陣列的第
j+1個一維陣列的首元素的位址
*(*(a+i)+j)+k:第
i+1個二維陣列的第
j+1個一維陣列的第
k+1個元素的位址
*(*(*(a+i)+j)+k):第
i+1個二維陣列的第
j+1個一維陣列的第
k+1個元素的數值
八、常見的記憶體錯誤
1、記憶體分配未成功,卻使用了它。
2、記憶體雖然分配成功,但是尚未初始化就引用它。
3、記憶體分配成功並且已經初始化,但操作越過了記憶體邊界。
4、忘記了釋放記憶體,造成記憶體洩漏。
5、釋放了記憶體卻繼續使用它。
九、記憶體錯誤的應對方法以及用malloc
分配空間的步驟
1、分配記憶體空間。
2、檢查分配是否成功。若分配成功,則返回記憶體的首位址;若分配失敗,則返回
null
,並退出程式。
3、清空分配好的空間的資料,即原來的記憶體中的資料。(使用
malloc
或bzero
函式)
4、使用記憶體。
5、使用完記憶體之後,需要釋放記憶體。
6、對指標置空。若釋放記憶體之後不將指標置空,這時如果繼續使用該指標,指標會成為野指標。
指標及其應用(一)
2 指標的長度 指標的長度時固定的,任何型別的指標都是4 位元組。原因 所有的指標都用來儲存位址,而在作業系統中,位址的長度是固定的,因為位址的長度是由作業系統的位數決定的。32 位的作業系統中是 4位元組,64位的作業系統中 是 8位元組。3 指標的運算子 和 運算子 通常稱為間接引用運算子,它返...
c語言,指標,及其應用
既然指標變數的值是乙個位址,那麼這個位址不僅可以是變數的位址,也可以是其它資料結構的位址。在乙個指標變數中存放乙個陣列或乙個函式的首位址有何意義呢?因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首位址,也就找到了該陣列或函式。這樣一來,凡是出現陣列,函式的地方都可以用乙個指標變數來...
9 3函式指標及其應用
函式指標是指向函式的指標,指向儲存這個函式第一條指令的位址,稱為函式的入口位址。int ascending int a,int b int descending int a,int b void selectionsort int a,int n,int compare int a,int b if...