Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将数据推送到C++;_C++_Casting_Struct - Fatal编程技术网

C++ 如何将数据推送到C++;

C++ 如何将数据推送到C++;,c++,casting,struct,C++,Casting,Struct,假设我有下面的程序 typedef struct xyz { int abc[6];//int abc; //int yz; }xyz; int main() { int *ptr = new int(10); int *ptr1 = new int(20); xyz* XYZ = reinterpret_cast <xyz*>(ptr); //Initializes XYZ->abc[0] X

假设我有下面的程序

 typedef struct xyz
    {
    int abc[6];//int abc;
    //int yz;
    }xyz;
    int main()
    {
    int *ptr = new int(10);
    int *ptr1 = new int(20);

    xyz* XYZ = reinterpret_cast <xyz*>(ptr); //Initializes XYZ->abc[0]
    XYZ = reinterpret_cast <xyz*>(ptr1);//Initializes XYZ->abc[0]

    }
typedef结构xyz
{
int abc[6];//int abc;
//int-yz;
}xyz;
int main()
{
int*ptr=新的int(10);
int*ptr1=新int(20);
xyz*xyz=reinterpret_cast(ptr);//初始化xyz->abc[0]
XYZ=重新解释强制转换(ptr1);//初始化XYZ->abc[0]
}
在这里,值输入到第零个位置。如果我想将值推入
XYZ->abc[1]
,那么我该怎么做呢?

也许您想这样做

 XYZ = reinterpret_cast<xyz*> (ptr1+1);
不要忘记初始化它们,例如使用
memset(ptr,0,sizeof(int)*10)


在Linux系统上,我强烈建议使用
g++-Wall-g
编译,并使用和
gdb
调试程序。你真的很想知道这些工具。

你可以不用任何铸造就可以做到这一点:

xyz val;

val.abc[0] = 1234;
val.abc[1] = 5678;
或者,如果您需要动态分配的实例:

xyz* ptr = new xyz();

ptr->abc[0] = 1234;
ptr->abc[1] = 5678;
简单:

xyz XYZ;
XYZ.abc[1] = *ptr;
我想初始化所有结构成员

您的代码表现出未定义的行为,并且远比必要的复杂得多。如果只需初始化结构,请创建构造函数:

struct xyz {
    int a[6];

    xyz() : a() { }
};
现在,如果创建类型为
xyz
的对象,它将被初始化:

int main() {
    xyz XYZ;
}

请注意,此解决方案要简单得多。它也不使用指针或手动内存管理,也不会泄漏内存。哦,而且它也不使用在C++中完全不必要的<代码> TyBuffStult.Suth.< /Cult>构造。实际上,这是完全不确定的C++代码。你到底想用它实现什么?你需要使用指针算术,我建议你使用共享pointers@KonradRudolph:我想初始化所有结构成员。如何做到这一点?@RasmiRanjanNayak通过编写构造函数。实际上我不确定这是UB。请注意,ptr1不是数组,它是指向单个
int
的指针。可能是对的。但是我的程序需要像我要求的那样。@Rasmi:但是您试图将值写入一个不存在的结构中-您没有xyz实例,所以所有强制转换都无效。@Rasmiranjanayak,所以您不能更改程序?那你为什么要问呢?@Rasmi So?这不是问题。只需添加一个适当的构造函数,用0以外的值初始化它(但是,如果您不使用C++11,则需要在构造函数中手动执行)。
int main() {
    xyz XYZ;
}