这句话是什么意思?

//allocated memory for Device info

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

我知道,“(*pppscorestracture)->psDeviceDetails”是指向指针的指针。但我无法想象calloc如何返回指针到指针?我是初学者请帮忙

最佳答案

(*PppsCoreStructure)->psDeviceDetails用类型sDeviceDetails **声明
calloc()的返回值为类型void*
(sDeviceDetails **)calloc(...)calloc的返回值转换为sDeviceDetails **类型
在C++语言中,这种类型的CAST是必不可少的,尽管在C++中通常不使用calloc,并且可能使用C++的转换。
在C语言中,不需要类型转换,因为void*指针与所有其他指针类型都是赋值兼容的。
在你的评论中
但我想知道sDeviceDetails*sDeviceDetails**有什么不同
我怀疑这是你真正的问题。
答案很简单:T*是指向T的指针,T**是指向T的指针。

08-16 20:40