gpt4 book ai didi

我可以使用变量来声明数组的大小吗? C

转载 作者:行者123 更新时间:2023-11-30 21:03:06 27 4
gpt4 key购买 nike

我可以做这样的事情吗?我认为你可以,因为它有效,但我不确定它是否 100% 正确。

printf("Array size: ");
scanf("%d", &n);
int array[n]; // I know this only works with C99

最佳答案

可变长度数组严格来说是 C99 功能。 GCC 和 Clang 等编译器允许它们在 C90(ansi 和 C89)模式以及 C++ 中使用。例如,请参阅 GCC docsClang docs 。两种编译器都有警告或扩展,在使用 VLA 时可能会提供或限制某些功能。 GCC 特定扩展的一个示例是以下代码,该代码无法在 Clang 中编译:

void tester (int len; char data[len][len], int len)
{
}

在这两个编译器中,-pedantic 都会对 VLA 为非标准的标准模式中的使用发出警告。

在 C11 中,对可变长度数组的支持是可选的。 C11 标准指定了一个“功能测试”宏,用于说明实现是否支持它们。

§6.7.6.2 [...] (Variable length arrays are a conditional feature that implementations need not support; see 6.10.8.3.)

§6.10.8.3 _ _STDC_NO_VLA_ _ The integer constant 1, intended to indicate that the implementation does not support variable length arrays or variably modified types.

关于我可以使用变量来声明数组的大小吗? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26563735/

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