struct nameinfo {
char name[50];
char phone[50];
int num[20];
};
void main() {
struct nameinfo a;
a.num = 120; // 編譯錯誤:左操作數必須為左值
printf("%d", a.num);
}
`a.num` 是數組名,代表數組首地址(常量指針),不可作為左值賦值。 只能對**數組元素**賦值,如 `a.num[0] = 120;`。
printf("%p", a.num); // 輸出首地址,如 0x7ffd...,不可修改
// 1. 對單個元素賦值
a.num[0] = 120;
a.num[1] = 200;
// 2. 整體賦值(需逐元素或 memcpy)
int src[20] = {120};
memcpy(a.num, src, sizeof(src));
// 3. 初始化時賦值
struct nameinfo a = { .num = {120, 200} }; // C99 指定初始化器
// 或
struct nameinfo a = { "", "", {120} }; // 順序初始化