C语言 。结构体、共用体的几个问题。。。

2025-04-06 02:30:10
推荐回答(4个)
回答1:

void main( )
{
static struct node a={10,'x'};
func(a);
printf("%d,%c",a.x,a.c); //这里,a.x和a.c就是结构体的成员。打印int成员x和char成员c的值。
}

共用体和结构体的区别在于:
共用体成员之间是用同样的地址空间,s->k=0x12345678;
之后,s->c[0]就等于被初始化了,所以有值。

结构体的成员地址空间是互相独立的。

回答2:

结构体这里是地址传递吗?a不是个地址常量吗?
这里是结构体变量做参数,因此是传值,不是传地址,至于a不是地址常量,只有数组名才是地址常量,a是静态局部变量

回答3:

这不是什么地址传递,而是函数调用时参数之间的传递问题。在C语言中,参数之间的传递是把实参的值复制一份传递给形参,而实参的值不发生变化。执行func(a);(变成a.x=20;a.c='y';),但是a.x和a.c的值不变,最后输出还是《10,‘x’》,这个,你应该理解!a有对它赋值,能赋值就一定不是常量,它不具有内存空间,没法对它赋值,所以,a 不是地址常量!

回答4:

a就是代表一个结构体常量,不是什么地址
如果把a定义成为一个数组的话定义a[],a就是地址常量