使用指针成员对结构进行类型转换

时间:2014-05-09 16:20:08

标签: c++ pointers visual-c++ struct casting

我试图将带有指针成员的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;

2 个答案:

答案 0 :(得分:2)

策略1不正确。它返回一个指向存储器的指针,该存储器存储所需数据的地址。

策略2是正确的'。它返回数据的地址。

答案 1 :(得分:0)

你做这件事的方式并不重要。并且事实上你的结构只有一个成员。事实上,你的struct中的第一个成员是uchar * videoData,因此“video”和“video.videoData”都指向内存中的相同位置。

相关问题