访问嵌套结构变量

问题描述 投票:1回答:2

[当我尝试编译以下程序时,它在屏幕上没有输出:

#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类型的结构,因此我分别向JANE8arr [10]成员分配了两个值numname

我什至尝试过

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

20p1's成员"age"的值。尝试打印值p1.name.age时会给出0而不是20

怎么了?是否存在语法错误或概念错误?

c arrays struct nested structure
2个回答
3
投票
  1. 仅在初始化结构后才允许使用您使用的表单。您需要使用复合文字。

2
投票

如果是初始化,请直接执行:

© www.soinside.com 2019 - 2024. All rights reserved.