[当我尝试编译以下程序时,它在屏幕上没有输出:
#include<stdio.h>
int main ()
{
struct d1
{
char arr [10];
int num;
};
struct d2
{
struct d1 name;
int age;
}p1;
p1.name={("JANE",8)};
printf ("%s",&p1.name.arr[0]);
}
我认为问题是由于行p1.name={("JANE",8)};
但是我想我写的都没错。通过写这行代码,我试图为成员"name"
具有结构类型p1
的变量d2
赋值。并且由于name
本身是具有两个成员的d1
类型的结构,因此我分别向JANE
的8
和arr [10]
成员分配了两个值num
和name
。
我什至尝试过
p1.name={{"JANE",8}}; //For this it gives error
p1.name={("JANE",8),20}; //For this it compiles but no output
p1.name={{"JANE",8},20}; //again error
20
是p1's
成员"age"
的值。尝试打印值p1.name.age
时会给出0
而不是20
。
怎么了?是否存在语法错误或概念错误?
如果是初始化,请直接执行: