2023年12月18日 關於void

2021-10-01 13:43:25 字數 1000 閱讀 5928

說到c就不得不提指標,指標和結構體兩個東西是c語言的靈魂。而一提到指標,有乙個比較特殊的,那就是void*。void*到底是怎樣的存在?

#include

#include

intmain()

;int

*b=a;

char

*c=(

char*)

&a[0];

printf

("b+1:%d\n",*

(b+1))

;printf

("c+1:%d\n",*

(c+1))

;system

("pause");

return0;

}

輸出結果為

同樣是指標型別,b和c有什麼區別?

乙個是指向整型的指標,乙個是指向char型的指標,當它們執行算術運算時,它們的步長就是對應型別占用空間大小

結論:各種型別的指標沒有本質區別,只是解釋記憶體中的資料方式不同。例如,對於int型指標b,該引用時,會解析4位元組,算術運算時,也是以該型別占用空間大小為單位。所以b+1,移動4位元組,解引用,處理4位元組內容,得到2019。對於char型指標c,解引用時,會解析1個位元組,算術運算時,也是以sizeof(char)為單位,所以c+1,移動一位元組,解引用,處理1位元組,得到03。

指標是對記憶體區域的抽象。指標變數中存放著目標物件的記憶體位址,而與指標相復合的型別,則說明了相應記憶體區域中的內容具有哪些屬性,以及能做什麼事情。也就是說,在記憶體空間某塊區域中的內容,原本可以是不可解讀的;但是,如果有乙個描述這塊區域的指標存在,我們就能找到它(位址的作用),並且合理地使用它(型別作用)。void*只用其中一半地作用。因為沒有明確與指標相復合地型別,所以不能解引用,也不能使用基於型別之上(sizeof(t))的指標運算。

2023年12月18日 指標

理解複雜型別指標,乙個複雜型別裡會有很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和預算優先順序一樣。從變數名起,根據運算子優先順序結合。int p p與int結合,這是乙個普通的整型變數 int p 首先從p開始,先與 結合,所以說p是乙個指標,然後再與int結合,說明指標所指向的內...

2023年12月12日總結

今天用plsql進行pde檔案匯入時,提示表空間不存在,有兩個伺服器,從a伺服器匯出的pde檔案在b伺服器匯入表,在plsql選擇工具 匯入表,在pl sql developer標籤下的在建立表前打鉤,然後匯入檔案那選擇剛才匯出生成的pde檔案,按匯入,結果出錯,日誌如下 import starte...

2023年9月18日總結

這幾天各種綜合測評的事感覺狀態沒有自己想象中的好,當然這也不是自己不好好看部落格的理由。這幾天沉迷於數論中無法自拔,又找了一些容斥定理的東西,找了乙個總結性的部落格,然後前幾道還好,後來有一道組合數的題卡了我兩天,今天上概率論的時候突然恍然大悟。題意是 給出乙個方程 x1 x2 x3 x4 x5 x...