struct STU{ char name[10) aint mumn, void fl(struct STU c) [struct STU b-{'LiSiGoo",2042};=b: void 2(struct STU *c) [struct STU b-{"SunDan",2044}, c b, hainO [struct STU ={’YangSan" 2041 },b-{"Wang Ym”,2043}; f()£(&b); prattf %d %dn" nin,b.nur)
时间: 2024-03-23 11:39:27 浏览: 27
这段代码有些问题,首先是结构体定义有错误,应该是:
```
struct STU{
char name[10];
int num;
};
```
然后是函数`fl`和`2`的定义也有问题,应该是:
```
void fl(struct STU c) {
struct STU b = {"LiSiGoo", 2042};
c = b;
}
void func2(struct STU *c) {
struct STU b = {"SunDan", 2044};
*c = b;
}
```
最后是主函数,应该是:
```
int main() {
struct STU b = {"YangSan", 2041};
fl(b);
func2(&b);
struct STU hain0 = {"Wang Ym", 2043};
func2(&hain0);
printf("%d %d\n", b.num, hain0.num);
return 0;
}
```
输出结果应该是:
```
2044 2044
```
相关问题
有一链式结构,定义如下 : struct stu{ char name[20]; int no; struct stu *next;
这是一个链式结构体,其中包含了三个成员:name、no 和 next。其中,name 是一个长度为 20 的 char 数组,用来存储学生姓名;no 是一个整型变量,用来存储学号;next 是一个指向下一个结构体的指针,用来构建链表。
这个链式结构体可以用来表示一个学生信息,每个结构体代表一个学生,通过 next 指针可以将多个学生信息串联起来形成一个链表。在链表中,每个结构体代表一个节点,next 指针指向下一个节点,最后一个节点的 next 指针为 NULL,表示链表的末尾。
struct A {char a; int b; short c}
在 32 位系统中,`struct A {char a; int b; short c}` 的大小为 8 字节。
这是因为在 32 位系统中,一个字节的对齐方式是按照 4 字节对齐的。结构体中最大的成员变量是 `int`,它需要 4 字节对齐,因此结构体中的偏移量需要是 4 的倍数。而 `char` 和 `short` 变量只需要 1 和 2 字节的空间,分别占用 1 和 2 个字节的空间。因此,编译器在 `char` 和 `short` 变量之间填充了 2 个字节的空间,以保证结构体中的偏移量是 4 的倍数,从而满足对齐要求。因此,`struct A {char a; int b; short c}` 的大小为 8 字节。