gpt4 book ai didi

c - 在 C 中使用函数的返回值作为数组大小初始化器

转载 作者:行者123 更新时间:2023-12-02 01:09:30 26 4
gpt4 key购买 nike

我用 C 编写了一个函数来获取终端的大小:

int get_terminal_size()
{
struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);

return w.ws_row * w.ws_col;
}

但是,我想在初始化结构中的数组时将它用作大小参数:

struct level
{
[...]
char level_data[get_terminal_size()];
}

但是,这不会编译,因为编译器告诉我初始化元素需要是常量(这是有道理的,但是将返回值分配给 const int 也不起作用).

有没有其他方法可以做我需要用 C 做的事情?

提前致谢。

最佳答案

数组的大小必须在编译时已知。如果您想动态分配内存,则必须使用 malloc

char *level_data = malloc(get_terminal_size());
if (level_data == NULL)
{ /* handle allocation failure */ }
/* ...Do something with your array... */
free(level_data);

评论里的人,谢谢指正。

关于c - 在 C 中使用函数的返回值作为数组大小初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45724513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com