如何解决C ++访问作为结构成员的数组
我已经在这里搜索了一段时间,但是虽然我可以找到相关的问题,但找不到所需的答案。我很抱歉是否已经被问到了。
我需要可以存储整数数组的结构。我用两种不同的方式来做,我理解指针和数组是相似的东西,但并不完全相同,但是我无法告诉我何时可以以哪种方式使用哪一个。
我了解Test2的工作原理。但是,在编译时,我不知道数组的长度,因此我需要使用堆,因此使用Test1。问题是我无法将值分配给Test1结构内数组array_int中的整数。我的观察方式是,在我用“错误”注释的行上,我试图在内存地址array_int指向的位置写入5。但是由于我没有在任何地方指向它,所以这行不通(我得到:使用大小为8的未初始化变量)。如果我错了,请纠正我,因为我仍在尝试学习这些概念。
一旦我执行(*test1).array_int = px;
,指针实际上就指向某处,我可以在该方向上写东西。
我有以下问题,我该如何在数组的下一个整数即下一个方向上写东西?
#include <iostream>
struct Test1 {
int* array_int;
};
struct Test2 {
int array_int[5];
};
int main() {
Test1* test1 = new Test1;
Test2* test2 = new Test2;
/*
(*test1).array_int[0] = 5; // Error
(*test1).array_int[1] = 5; // Error
*/
int x = 5;
int * px = &x;
(*test1).array_int = px; // This one works but I can only initialize first position
(*test1).array_int[0] = 22; // Now this works. I think it is because Now the pointer is actually pointing somewhere (to x).
(*test2).array_int[3] = 8;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。