我正在阅读 K&R 的 C 编程语言,在结构部分中我遇到了这些代码片段:
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”。
我不明白为什么它们不包含结构名称 - 它如何知道它正在处理的特定类型的结构?我的困惑是因为在前面的片段中它们确实包含结构名称,例如在以下函数的返回类型中,它是“结构点”而不仅仅是“结构”。为什么它们在某些情况下包含名称而在其他情况下不包含?
/* 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;
}