gpt4 book ai didi

c - 在 C 中,结构名称何时必须包含在结构初始化和定义中?

转载 作者:行者123 更新时间:2023-12-04 02:09:49 24 4
gpt4 key购买 nike

我正在阅读 K&R 的 The C Programming Language,在关于结构的部分我遇到了这些代码片段:

struct maxpt = { 320, 200 };

/* addpoints: add two points */
struct addpoint(struct point p1, struct point p2)
{
p1.x += p2.x;
p1.y += p2.y;
return p1;
}

在第一种情况下,它看起来像是将值 320 和 200 分配给变量 maxpt 的成员。但我注意到缺少结构类型的名称(不应该是“struct struct_name maxpt = {320, 200}”吗?在第二种情况下,函数返回类型只是“struct”而不是“struct name_of_struct”。

我不明白为什么他们不包括结构名称——它怎么知道它处理的是什么特定类型的结构?令我更加困惑的是,在之前的代码片段中,它们确实包含结构名称,例如在以下函数的返回类型中,它是“struct point”而不仅仅是“struct”。为什么他们在某些情况下包含姓名,而在其他情况下不包含?

/* makepoint: make a point from x and y components */
struct point makepoint(int x, int y)
{
struct point temp;
temp.x = x;
temp.y = y;
return temp;
}

最佳答案

我的 K&R 副本在第 128 页包括:

struct point maxpt = { 320, 200 };

在第 130 页:

struct point addpoint(struct point p1, struct point p2)
{
p1.x += p2.x;
p1.y += p2.y;
return p1;
}

这是第二版,第 47 次打印,2011 年 2 月。

如果您的 K&R 副本包含其他内容,我认为这是错误的。

关于c - 在 C 中,结构名称何时必须包含在结构初始化和定义中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19462149/

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