我在结构中有一个数组,我想通过用户的输入输入它的大小。
struct queue
{
int maxSize;
int count;
int* element;
};
元素是数组,现在我想将它的大小设置为' 5'并初始化所有的' 5'细胞到' 0'
struct queue q;
*element -> ??
答案 0 :(得分:2)
您已将问题标记为C++
,因此这是一个C++
解决方案。忘掉指针,只需使用std::vector<int>
。
#include <vector>
struct queue
{
int maxSize;
int count;
std::vector<int> element;
queue(int n=5) : element(n) {}
};
然后
queue q;
将在queue
成员中构造一个包含5个元素的element
对象。无需malloc
,calloc
或free
。
注意:
如果您将代码更改为C
而不是C
和C++
,那么您就会明白为什么使用正确的代码非常重要。你不能在C
中执行上述操作,它实际上与使用指针和使用malloc
一样,就像其他答案一样。
答案 1 :(得分:0)
首先,element
不是数组;它是指针(到int
)。
如果你想为它分配内存并将其初始化为零,那么你可以使用calloc()
,如下所示:
struct queue q;
q.element = calloc(5, sizeof(int)); // Allocate memory for 5 int's.
您可以使用它,例如:
for (size_t i = 0; i < 5; i++)
q.element[i] = i+1;
使用后,记得释放()它:
free(q.element);
答案 2 :(得分:0)
如果您希望用户输入选择element
大小,则必须动态分配数组。
q.element = (int*) malloc(5*sizeof(int));
memset(q.element, 0, 5*sizeof(int)); // will initialize array values to 0.
答案 3 :(得分:-1)
在您的情况下,您需要运行时内存分配功能,因此您可以使用malloc
或calloc
函数在C中运行时内存分配。对于C ++,您可以使用new
。< / p>
struct queue q;
q.element = (int *)calloc(5,sizeof(int));
这里Calloc返回指向已分配内存的指针。内存设置为零。
struct queue q;
q.element = new int[5]();
Here()用于对元素进行值初始化,并将值设置为0。