#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Ms
{
char name[20];
int n;
char str;
}Ms;
int main()
{
Ms a, b;
a.n = 12;
strcpy(a.name, "lin");
memcpy(a.str, 'a', 1);
b = a;
printf("%s %d %c", b.name, b.n, b.str);
return 0;
}
首先说明这串代码是错误的,我本来是打算将b直接赋值给a的但是事实证明,但却在memcpy报错。(因为没有加&符)
后改为
#include<stdio.h>
#include<string.h>
typedef struct Ms
{
char name[20];
int n;
char str;
}Ms;
int main()
{
Ms a, b = { {0},2,'p'};
a.n = 12;
strcpy(a.name, "lin");
a.str = 'a';
//memcpy(a.str, 'a', 1);
printf("%s %d %c\n", a.name, a.n, a.str);
printf("%s %d %c\n", b.name, b.n, b.str);
b = a;
printf("%s %d %c\n", b.name, b.n, b.str);
return 0;
}
事实证明是可以改变的
#include<stdio.h>
#include<string.h>
typedef struct Ms
{
char name[20];
int n;
char str;
}Ms;
int main()
{
Ms a, b = { {0},2,'p'};
a.n = 12;
strcpy(a.name, "lin");
//a.str = 'a';
char h = 'a';
//strncpy(a.str, h,sizeof(char));
memcpy(&a.str, &h, 1);
printf("%s %d %c\n", a.name, a.n, a.str);
printf("%s %d %c\n", b.name, b.n, b.str);
b = a;
printf("%s %d %c\n", b.name, b.n, b.str);
return 0;
}