[英]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.