簡體   English   中英

何時在char指針上使用void指針?

[英]When to use a void pointer over a char pointer?

在哪種情況下,我們更喜歡在char指針上使用void指針,反之亦然?

事實上,兩者都可以類型轉換為任何數據類型。

void指針是指向“任何類型”的指針,它需要在被取消引用之前轉換為指向實際類型的指針。

一個指向char是一個指針char ,出現這種情況有屬性,你也可以訪問(部分)其他類型的穿過。

當意思是“任何類型”(或幾種類型之一等)時,您應該使用void * 當您訪問char (顯然)或其他類型的單個字節作為原始字節時,您應該使用char *

當指針引用的變量的類型未知時,將使用void指針。 例如,malloc()函數返回引用分配的內存的void指針。 然后,您可以將指針強制轉換為其他數據類型。

可能存在需要創建僅存儲地址的指針的情況。 你可以在那里使用一個空指針。

它更多的是關於代碼可讀性和結構,我不想看到一個函數需要輸入讓我們說結構的指針並通過char *獲取它,如果我看到char *是一個字符串(在純c術語中,我想到的第一件事) ,字符數組,空終止),另一方面用void *我被警告通常會傳遞一些東西,一個很好的例子是qsort函數。
所以它不是所有關於它的工作或編譯,它應該是可讀的,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM