gpt4 book ai didi

c - 现在也可以初始化自动结构和数组是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 00:18:43 24 4
gpt4 key购买 nike

在第 6 章的开头:Brian W. Kernighan 和 Dennis M. Ritchie 的书的结构,有一段我看不懂。

The main change made by the ANSI standard is to define structure assignment - structures may be copied and assigned to, passed to functions, and returned by functions. This has been supported by most compilers for many years, but the properties are now precisely defined. Automatic structures and arrays may now also be initialized.

自动结构和数组现在也可以初始化是什么意思?我很确定应该手动初始化自动变量,即局部变量。你能帮我理解这是什么意思吗?

最佳答案

在准标准 C 中(意思是“在 C89 标准之前”,或者很久以前),你不能写:

int function(int i)
{
int array[4] = { 1, 2, 3, 4 };
struct { int x; int y; } x = { 1, 2 };
struct { int x; int y; } a[] = { { 2, 3 }, { 3, 4 } };
...code using array, x, a...
return x.y + a[!!i].x + array[3];
}

现在你可以做所有这些了。<​​/p>

此外,在 K&R 第 1 版 C(大约 1978 年)中,您不能写:

int another()
{
struct { int x; int y; } a, b;
a.x = 1;
a.y = 0;
b = a; /* Not allowed in K&R 1 */
some_other_func(a, b); /* Not allowed in K&R 1 */
some_other_func(&a, &b); /* Necessary in K&R 1 */
...
}

您也可以只返回指向结构的指针(以及传递指向结构的指针)。 IIRC,一些 C 编译器实际上允许非指针表示法,但将幕后代码转换为使用指针。但是,在标准发布之前(K&R 1 发布后不久),结构分配和结构传递以及结构返回限制就已从 C 中移除。但并非所有编译器都支持这些功能,因为没有一个标准让它们符合。

关于c - 现在也可以初始化自动结构和数组是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513736/

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