‘壹’ 在C语言中.结构体变量之间可以相互赋值吗
结构体变量直接赋值,就是其本身内存地址空间,按照地址分布直接赋值。
所以两个一样的结构变量可以直接赋值。
但是如果结构成员中有指针,且指针指向的地址大小不一样,是不能直接赋值的。
‘贰’ 结构体什么时候可以直接赋值C
在声明的时候和后续赋值略有不同,在C语言中是两种处理方法。
如果有结构体
struct test
{
int a;
char c;
int b;
};
定义的时候,可以
struct test var = {1,'c', 2};
这样初始化,结果为var.a = 1, var.c = 'c', var.b = 2;
但是如果后续赋值
var = {1,'c', 2};
就会报错。因为在C语言中不支持这种形式的操作。
不过可以取巧转换一下,改成
var = (struct test){1,'c', 2};
这样就可以了。 在这种情况下,系统会申请一个临时变量,并初始化为该值,再对var进行赋值。而同类型结构体之间赋值操作是C语言规则允许的。