假设我有以下程序,
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]
}
此处值进入第零位置
。如果我想将值插入 XYZ->abc[1]
,我该怎么做?
最佳答案
也许你想做
XYZ = reinterpret_cast<xyz*> (ptr1+1);
但这种代码很恶心,它可能是一个未定义的行为(因为ptr1+1
可能不是一个有效的位置,你可能会得到一个 segmentation fault ) ,所以你应该避免这样做。
我其实不明白你的问题的动机(和用例)。
也许您想在堆上分配十个整数。然后代码
int *ptr = new int[10];
并且不要忘记初始化它们,例如使用 memset (ptr, 0, sizeof(int)*10);
在 Linux 系统上,我强烈建议使用 g++ -Wall -g
进行编译,并使用 valgrind 和 gdb
来调试您的程序。您真的很想了解这些工具。
关于c++ - 如何将数据推送到 C++ 中的第二个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12727154/