C++ 如何通过指针从结构中的列表中获取元素
我有一个带有int*的简单结构,我想用指针显示元素。 我想做那样的东西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存储本地数组的地址
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++中像这样做手动内存管理。