首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从结构中初始化数组

从结构中初始化数组
EN

Stack Overflow用户
提问于 2012-03-31 03:17:29
回答 4查看 401关注 0票数 0

我想知道是否有办法从一个结构变量中初始化一个数组。如果你有这样的结构-

代码语言:javascript
运行
复制
struct Test{  
    int Number;  
};

您希望初始化int 数字,使其成为一个数组。

我已经试过了,但没有用:

代码语言:javascript
运行
复制
Test t1;  
t1.Number = new int[3];   
t1.Number[3] = 6;

我知道C++禁止调整数组大小,但是如果有一种方法将整数初始化为数组,那就不是真正的调整大小了(不是吗?)而且,向量在结构中不起作用。我得到一个“向量不命名类型”错误。

P.S.,我也做不到:

代码语言:javascript
运行
复制
struct Test{  
    int Number[5];  
};

因为当时我不知道我想要的数组的大小。

EN

回答 4

Stack Overflow用户

发布于 2012-03-31 03:20:50

向量在结构中工作得很好:

代码语言:javascript
运行
复制
#include <vector>

struct Test {
    std::vector<int> Numbers;
};

我不知道你到底想做什么,但我认为这是近在咫尺。

票数 2
EN

Stack Overflow用户

发布于 2012-03-31 03:22:27

您可以使用指向int的指针--即,

代码语言:javascript
运行
复制
struct Test{  
    int *Number;  
};

然后,您可以在将来的任何时候将它分配给您喜欢大小的数组:

代码语言:javascript
运行
复制
t.Number = new int[5];

但是正如其他人已经说过的那样,带有小"v“的std::vector工作得很好;一定要使用#include <vector>,以便编译器知道您在说什么。

票数 0
EN

Stack Overflow用户

发布于 2012-03-31 03:24:53

一招就是这么做

代码语言:javascript
运行
复制
struct Test {
  int Numbers[1];
};

初始化结构时,需要使用自己的分配函数。

代码语言:javascript
运行
复制
struct Test *NewTest(int sizeOfNumbers) {
  return (struct Test*)malloc(sizeof(struct Test) + sizeof(int)*(sizeOfNumbers - 1));
}

然后,您就可以通过使用

代码语言:javascript
运行
复制
struct Test *test1 = NewTest(10);
test1->Numbers[0]...
test1->Numbers[1]...
test1->Numbers[9]...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9952720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档