在结构体中输入数组的大小

Enter size of an array in a struct

本文关键字:数组 输入 结构体      更新时间:2023-10-16

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

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

元素是数组,现在我想把它的大小设为'5'并将所有'5'单元格初始化为'0'

    struct queue q;
    *element -> ??

您将问题标记为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;

将在element成员中构造一个具有5个元素的queue对象。不需要malloc, callocfree

注意:

如果您将标签更改为C而不是CC++,您就会明白为什么使用正确的标签很重要。您不能在C中执行上述操作,它实际上与使用指针和使用malloc作为其他答案所给出的相同。

如果您希望element的大小将由用户输入选择,您必须动态分配数组。

q.element = (int*) malloc(5*sizeof(int));
memset(q.element, 0, 5*sizeof(int)); // will initialize array values to 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()它:

free(q.element);

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

用于C语言

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

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

适用于c++语言

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

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