微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++访问作为结构成员的数组

如何解决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 举报,一经查实,本站将立刻删除。