我试图将带有指针成员的struct
类型转换为(char *
)。请告诉我以下两种类型转换策略是否有任何区别。 struct
也会显示。
struct videoPacket{
uchar * videoData;
}video;
// and initializing 'video' to some value
策略1:
videoPacket * videoPointer = &video;
char * buffer = (char *)videoPointer;
策略2:
videoPacket * videoPointer = &video;
char * buffer = (char *)videoPointer->videoData;
由于struct
只有一个成员,buffer
是否会指向相同的内容?
编辑:如果我想将下面显示的结构类型转换为char *,我该怎么做?
struct struct1{
uchar * struct1data1;
char struct1data2;
}video;
答案 0 :(得分:2)
策略1不正确。它返回一个指向存储器的指针,该存储器存储所需数据的地址。
策略2是正确的'。它返回数据的地址。
答案 1 :(得分:0)
你做这件事的方式并不重要。并且事实上你的结构只有一个成员。事实上,你的struct中的第一个成员是uchar * videoData,因此“video”和“video.videoData”都指向内存中的相同位置。