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

时间:2020-10-13 23:06:25

标签: c++ arrays pointers struct heap

我已经在这里搜索了一段时间,但是虽然我可以找到相关的问题,但找不到所需的答案。我很抱歉是否已经被问到了。

我需要可以存储整数数组的结构。我用两种不同的方式来做,我理解指针和数组是相似的东西,但并不完全相同,但是我无法告诉我何时可以以哪种方式使用哪一个。

我了解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;
}

0 个答案:

没有答案
相关问题