gpt4 book ai didi

我可以在 C 中使用函数来定义数组的长度吗?

转载 作者:行者123 更新时间:2023-11-30 21:16:51 25 4
gpt4 key购买 nike

例如,假设我有一个返回 6 的函数,我可以使用该函数来定义一个新数组吗?

int array[funct(x)];

最佳答案

可变长度数组在 C99 标准中有效。可以按照您所描述的方式在函数内声明数组。

#include <stdio.h>

int func(void)
{
return 6;
}

int main(void)
{
int arr[func()];

arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;
arr[5] = 5;

printf("%d, %d, %d, %d, %d, %d\n",
arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);
}

即使使用 -Wall-Wextra,编译时也不会出现任何警告。

$ gcc text.c -Wall -Wextra
$ ./a.out
0, 1, 2, 3, 4, 5

没问题。请务必查看 Wikipedia page on variable-length arrays .

如果您想控制内存使用并且熟悉它,您也可以使用动态内存分配。如果我没记错的话,如果在编译时未知数组大小,则会执行某种形式的动态内存分配。

#include <stdio.h>
#include <stdlib.h>

int func(void)
{
return 6;
}

int main(void)
{
int *arr;
arr = malloc(func() * sizeof *arr);

arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;
arr[5] = 5;

printf("%d, %d, %d, %d, %d, %d\n",
arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]);

free(arr);
}

这也是有效的。输出是相同的。

关于我可以在 C 中使用函数来定义数组的长度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54396576/

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