#include <stdio.h>
#include <string.h>
typedef struct data{
int a;
int b;
char c[10];
}test;
int main(void)
{
test a = {1,2,"world"};
test b;
b = a;
b.a = 22;b.b = 33;
printf("a.a:%d\ta.b:%d\t\n",a.a,a.b);
return 0;
}
b = a;
a和b都是独立的内存空间:
a.a = 1;a.b = 2;
b.a = 22;b.b = 33;
不可以这样赋值:
b = {22,33,"world"};
注意:
当结构体中有指针时就不能使用这种赋值方式
因为它们的指针成员指向的是同一内存空间
使用memcpy(&b,&a,sizeof(a));也可以实现赋值
数组的赋值:
除了数组在初始化时,一般不能使用“=”运算符直接赋值
gets,fgets,sprintf系列都可以实现字符数组的直接赋值,(sprintf系列函数也能对其他类型数组进行赋值)
memcpy同样可以对不同类型的数组进行赋值