簡體   English   中英

calloc類型轉換到指針的指針

[英]calloc typecasting to pointer to pointer

這句話是什么意思?

//allocated memory for Device info

(*PppsCoreStructure)->psDeviceDetails=(sDeviceDetails **)calloc(CORE_DEVICEINFO_SIZE, sizeof(sDeviceDetails*));

我知道'(* PppsCoreStructure)-> psDeviceDetails'是指向指針的指針。 但是我無法想象calloc如何將指針返回指針? 我是初學者,請幫忙

calloc此調用為指向sDeviceDetails對象的CORE_DEVICEINFO_SIZE指針分配了足夠的空間。 calloc返回一個簡單的內存緩沖區,可用於存儲任何內容; 在這種情況下,指針。

(請注意,依靠calloc返回由空指針填充的緩沖區不是可移植的:它返回零填充的緩沖區,但空指針不一定是全零。不過,這是在常見平台上的。)

該函數分配一個指針數組。 CORE_DEVICEINFO_SIZE是此數組中的指針數。

(sDeviceDetails **)表示編寫代碼的程序員不知道C語言中的空指針轉換是如何工作的。 演員表是多余的,應刪除。

  • (*PppsCoreStructure)->psDeviceDetails聲明為sDeviceDetails **類型sDeviceDetails **
  • calloc()的返回值類型為void*
  • (sDeviceDetails **)calloc(...)投下的返回值calloc為類型sDeviceDetails **

在C ++語言中,這種類型轉換是必不可少的,盡管在C ++中,通常不使用calloc ,並且可能使用C ++轉換。

在C語言中,不需要類型轉換,因為void*指針的分配與所有其他指針類型兼容。


在評論中,您聲明

但我想知道sDeviceDetails*sDeviceDetails** sDeviceDetails*不同

我懷疑這實際上是您的真正問題。

答案很簡單: T*是指向T*的指針, T**是指向T**的指針。

暫無
暫無

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

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