在结构

时间:2016-11-05 19:31:17

标签: c++ c arrays pointers struct

我在结构中有一个数组,我想通过用户的输入输入它的大小。

struct queue
{
    int maxSize;
    int count;
    int* element;
};

元素是数组,现在我想将它的大小设置为' 5'并初始化所有的' 5'细胞到' 0'

    struct queue q;

    *element -> ??

4 个答案:

答案 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对象。无需malloccallocfree

注意:

如果您将代码更改为C而不是CC++,那么您就会明白为什么使用正确的代码非常重要。你不能在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)

在您的情况下,您需要运行时内存分配功能,因此您可以使用malloccalloc函数在C中运行时内存分配。对于C ++,您可以使用new。< / p>

对于C语言

struct queue q;
q.element = (int *)calloc(5,sizeof(int));

这里Calloc返回指向已分配内存的指针。内存设置为零。

对于C ++语言

struct queue q;
q.element = new int[5]();

Here()用于对元素进行值初始化,并将值设置为0。