这句话是什么意思?
//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的指针。