我有一个结构:
struct numbers_struct {
char numbers_array[1000];
};
struct numbers_struct numbers[some_size];
创建struct后,有一个整数作为输入:
scanf("%d",&size);
我需要使用malloc(size)
并指定数组编号的大小。 (而不是 some_size 使用大小)
在C语言中可能有这样的事情吗?
是的,但是malloc()
需要数组所需的内存总量,而不是元素数量:
struct numbers_struct* numbers = malloc(size * sizeof(*numbers));
if (numbers)
{
}
请注意,您must检查返回值scanf()
使用前size
(在这种情况下这是一个糟糕的名字)否则代码可能使用未初始化的变量,如果scanf()
fails:
int number_of_elements;
if (1 == scanf("%d", &number_of_elements))
{
struct numbers_struct* numbers =
malloc(number_of_elements * sizeof(*numbers));
if (numbers)
{
free(numbers); /* Remember to release allocated memory
when no longer required. */
}
}
可变长度数组是在 C99 中引入的,但它们的使用存在限制(例如,它们不能在文件范围内使用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)