指標的陷阱

2021-09-10 04:38:20 字數 1731 閱讀 3506

首先在前面我們就講解了指標的基本的一些基本的概念以及一些指標相關的定義,這篇我們就來講解講解一下指標中的一些陷進。

指標其實不難理解,難理解是指標指向的記憶體個一些指標的sizeof()的運算。

陷進一:指標陣列和陣列指標

例如下面的**

#include #include int main()
我們進行如下兩個操作的時候

得到的結果是一樣的,此時我們要明白arr是陣列名,指向陣列的首元素的位址,但是&arr是指向整個陣列元素的,但是兩個本質上都是指標,只是指向的內容不是一樣的。這就是陣列指標。

下面我們呢看如下的**

#include #include int main();

system("pause");

return 0;

}

此時的p就是乙個陣列,這個陣列特殊就在於每個元素都是乙個陣列指標。實質上就是乙個陣列。這就是我們所說的指標陣列和陣列指標。

陷進二:陣列作為引數時傳參

在我們一位陣列作為引數時傳遞的就是乙個位址,在c語言中陣列名就是乙個指標,或者乙個一維陣列。

#include #include void test(char* p)

int main()

此時這樣傳參時可以的。但是也可以更換為void test(char p),同樣也是可以正確的傳參。

一位陣列傳參並沒有什麼陷進,但是對於二維陣列的時候我們就需要注意一些小細節。

在傳遞引數的時候可以省略前面的數字,但是後面的數字我們必須寫入,數字的大小無關緊要。

#include #include void test(int arr[100])

int main();

test(arr);

system("pause");

return 0;

}

此時我們寫入100也是無關緊要的。

函式指標

這是我們最重要的,是我們最常用的乙個知識點,但是也同樣是要注意的get

#include #include void test()

int main()

這兩個結果是相同的,我們可以定義乙個函式指標將這個位址儲存起來,以便我們以後去使用,這樣是可以節省一些出入棧消耗的。

#include #include void test()

int main()

我們可以去正常去呼叫test函式。

函式指標陣列,這是我們的重點

int(*p[4])(int x, int y) = ;
add,sub,mul,div都是函式名。稱為轉移表在呼叫的時候可以直接p[0](3,4),這就是轉移表的運用。

javascript this指標的陷阱

function backimg jqobj this.slideup function 像上面這樣的一段js backimg是乙個類。init是這個類的初始化函式,本意是呼叫初始化函式init時,註冊乙個雙擊事件,雙擊事件的執行函式是slideup。實際執行中發現slideup無法正確執行。經過f...

空指標訪問的陷阱

asan工具報錯發生在如下行,此處maudiorenderserviceptr為null。this onstop false,maudiorenderserviceptr getaddr 下面對正常執行和工具除錯出現的結果一致進行分析,以及延伸的討論一下關於空指標訪問的一些陷阱。空指標即未指向任何物...

C語言指標引數陷阱

本人是乙個剛開始學資料結構的大二學生,最近在學習鍊錶的時候出現了一些小問題,一下是這個問題的詳細分析,雖然是很簡單,很可笑的乙個小問題,卻也值得深究 include include 這裡構造乙個結構體,用來表示鍊錶的乙個節點 typedef struct ysfysf,pysf 建立乙個節點 voi...