在结构体中输入数组的大小
Enter size of an array in a struct
我在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
, calloc
或free
。
注意:
如果您将标签更改为C
而不是C
和C++
,您就会明白为什么使用正确的标签很重要。您不能在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);
在您的情况下,您需要运行时内存分配功能,因此您可以使用malloc
或calloc
函数在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。
相关文章:
- 检查TCHAR数组输入是否为带符号整数C++
- C++数组输入不接受一定数量的整数
- 为什么我的代码无法处理大型数组输入(>10000)?
- 我正在努力处理多维数组输入和输出,我管理输入,但是打印无法按计划工作
- 使用无符号字符数组输入十六进制数
- C++用用户输入在循环中填充 char 数组:输入整个字符串时到底发生了什么?
- 如何从用户获取数组输入
- C 2x2数组输入线
- 字符数组输入限制
- 将字符串数组输入到函数C++
- C++:如何将普通话(字符串)分配给用户使用数组输入的数字 &运算符问题
- 数组排序、数组输入、数组输出
- 将字符数组输入stdin
- 如何在 c++ 中为对象数组输入字符串
- 如何在c++ mex文件中访问多维数组输入
- 读取文件并将其作为整型数组输入
- 从c++文件中获取输入(矩阵数组输入)
- 数组输入不工作
- 函数结构数组输入cin问题
- 结束数组输入(c++行业标准)