關於C與C 的零散知識(1)

2021-09-22 18:51:27 字數 646 閱讀 5377

關於在標準c中的(void*)作為傳遞引數和返回型別的問題

(void )可以被看成乙個泛型,泛型的意思就是說我們可以向其中傳遞任何型別的資料,可以在執行時為其動態指派特定的型別。在(void)被作為乙個引數的時候,在呼叫該函式的時候可以向其中傳遞任意型別的引數(注意:引數必須是指標型別的變數)。從這一點上來看它的功能比較類似c++中的模板。

不過若是將void*賦值給其他型別的引數,那麼需要進行型別轉換。

從語法上來說,(void*)是乙個空指標型別,他不指向任何型別,僅僅是個位址而已,所以它不能進行自加或者自減運算

int a=1;

p=&a; //正確;

a=(int *)p //正確;

如果(void*)作為乙個函式的返回值,那麼可以將它認為它可以返回任意型別的指標。同樣的,在呼叫函式中我們也應該定義乙個void型別的指標用於接受void型別的返回值,同理,在使用它或者輸出它時,要將其轉化為對應型別的指標才可以使用。以下是乙個簡短的例子。

#include void number1(void *a)

void string(void *s)

void *number(void *a)

void main()

相信這個例子已經足夠的詳細了。

C 零散知識

全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...

C 零散筆記

關於控制項 控制項實質就是乙個類 屬性中的name就是它例項後的變數名 屬性中的其他東西就是類中的變數或函式 例如 可以直接通過name.backcolor color.yellow 來直接操作控制項的背景顏色 color類 裡面封裝的大量的顏色變數 r,g,b 通過color.blue呼叫 col...

零散的C筆記

如何表達陣列型別 如何表達函式指標 c 編譯器如何管理兩函式之間變數的關係?如果定義了乙個.cpp,然後再改為.c可能會出現問題,找不到main函式 指標變數和它所指向的記憶體空間變數是兩個不同的概念 指標指向誰,就把誰的位址賦給指標變數 記憶體四區概念 主調函式 main等 呼叫被調函式 1.ma...