Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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++ - Fatal编程技术网

C++ 如何通过指针从结构中的列表中获取元素

C++ 如何通过指针从结构中的列表中获取元素,c++,C++,我有一个带有int*的简单结构,我想用指针显示元素。 我想做那样的东西 for(int i = 0; i<x*y; i++){ std::cout << parr->elems[i]; } for(int i=0;iy; 对于(int i=0;i函数createMyStruct返回在堆栈上创建的局部变量的地址。一旦函数结束,堆栈将被取消,变量将被销毁 此外,同一函数中的MyStruct设置为通过obj.elems=my_list存储本地数组的地址

我有一个带有int*的简单结构,我想用指针显示元素。 我想做那样的东西

for(int i = 0; i<x*y; i++){
        std::cout << parr->elems[i];

   }
for(int i=0;iy;

对于(int i=0;i函数
createMyStruct
返回在堆栈上创建的局部变量的地址。一旦函数结束,堆栈将被取消,变量将被销毁

此外,同一函数中的
MyStruct
设置为通过
obj.elems=my_list
存储本地数组的地址。函数结束时,此设置也会被删除


我建议您阅读C/C++中的堆栈与堆。另外,请注意,这与Java/C#等托管语言有很大不同,Java/C#等托管语言采用类似的方法。函数
createMyStruct
返回在堆栈上创建的局部变量的地址。一旦函数结束,堆栈将被取消,变量将被删除毁灭

此外,同一函数中的
MyStruct
设置为通过
obj.elems=my_list
存储本地数组的地址。函数结束时,此设置也会被删除


我建议您阅读C/C++中的堆栈与堆。另外,请注意,这与Java/C#之类的托管语言有很大不同,在Java/C#中,类似的方法也适用。

您需要在
createMyStruct()中创建
MyStruct
函数需要使用新指针创建,这样它就不会被破坏。这样做的结果是:
100000
,以您的示例为例

MyStruct* createMyStruct(size_t nr, size_t nc, int e = 0){
    int how_many = nr * nc;
    int my_list[how_many];
    for(int i=0; i<how_many; i++){
        my_list[i] = e;
    }
    MyStruct *obj = new MyStruct;
    obj->x=nr;
    obj->y=nc;
    obj->elems = my_list;
    return obj;
}
MyStruct*createMyStruct(大小n,大小n,整数e=0){
int how_many=nr*nc;
int我的列表[有多少个];
对于(int i=0;ix=nr;
obj->y=nc;
obj->elems=我的列表;
返回obj;
}

您需要在
createMyStruct()函数中创建
MyStruct
函数需要使用新指针创建,这样它就不会被破坏。这样做的结果是:
100000

MyStruct* createMyStruct(size_t nr, size_t nc, int e = 0){
    int how_many = nr * nc;
    int my_list[how_many];
    for(int i=0; i<how_many; i++){
        my_list[i] = e;
    }
    MyStruct *obj = new MyStruct;
    obj->x=nr;
    obj->y=nc;
    obj->elems = my_list;
    return obj;
}
MyStruct*createMyStruct(大小n,大小n,整数e=0){
int how_many=nr*nc;
int我的列表[有多少个];
对于(int i=0;ix=nr;
obj->y=nc;
obj->elems=我的列表;
返回obj;
}

<代码> >代码> >我推荐用<代码> MyStult< /Cuff>构造函数,使用<代码> STD::vector < /COD>或<代码> STD::UngQuyPPTR < /C>和 STD::MaMaIOX < /COD> >管理<代码> ELSME< /COD>的内存。例如:请不要在新/现代C++中像这样做手动内存管理。建议使用<代码> MyStult< /Cuff>构造函数替换<代码> > MyStult> /Std::vector > <代码>或<代码> STD::UngQuyPPTR < /C> >和 STD::MaMaIOX < <代码> >管理<代码> ELSME< /COD>的内存。例如:请不要在新/现代C++中像这样做手动内存管理。