c语言结构体可以随意嵌套结构体么?
可以,typedef是将其定义为一种类型,方便于后来定义此类型的变量
给你举个例子:
第一种方式:
struct panel
{
…
};
struct player
{
struct panel panel1;
…
};
后面如果需要定义player类型的变量,则要有此格式: struct player var1
第二种方式:
typedef struct panel
{
…
};
typedef struct player
{
panel panel1;
…
};
如果需要定义player类型变量,则用 player var1就可以了!
typedef是定义变量类型!
是否main之内,都可以用
typedef后,再定义不需要加struct
而没有typedef,定义时要加struct
我给你改好了!已经回复!
有关C语言嵌套结构体的赋值
struct b *bshi;
bshi = (struct b*)malloc(sizeof(struct b));
memset(bshi, 0, sizeof(struct b);
bshi-bb = 1;
strcpy(bshi-a.aa, “string”);
bshi-a.aaa = ‘a’;
free(bshi);
C语言结构体嵌套问题
更正如下:注意语法
#includestdio.h
struct
Date
{
int
month;
int
day;
int
year;
};
struct
Person
{
char
name[20];
char
sex;
struct
Date
birthday;
unsigned
num;
};
int
main(void)
{
struct
Person
p1={“WangLi”,’M’,12,15,1974,111000222};
struct
Person
p2;
p2=p1;
printf(“zhang:%s,%c,%d-%d-%d,%lu\n”,p1.name,p1.sex,p1.birthday.month,p1.birthday.day,p1.birthday.year,p1.num);
return
0;
}
C语言中结构体嵌套
struct student
{
char name[20];
int age;
};
typedef struct student STU; //学生
struct class
{
STU students[50];
};
typedef struct class Class; //班
void main(void)
{
STU students[50]={…初始化}; //学生数组
STU …..
Class classes[8]; //班级数组
classes[0].students = students; //初始化班级学生
classes[1].students = ….
……
}
粗略的描述了一下,用指针来做最好!
C语言结构体的嵌套问题
scanf输入格式有问题
#include stdio.h
#include stdlib.h
#include malloc.h
#include string.h
struct course
{
char name[10];
int score;
int credithour;
};
typedef struct student
{
char name[10];
struct course s[5];
int average;
struct student *next;
}STU;
void Create(STU *L)
{
int i,sum;
STU *p,*s=L;
while (1)
{
p=(STU *)malloc(sizeof(STU));
s-next=p;
printf(“name\n”);
scanf(“%s”,p-name);
if (strcmp(p-name,”exit”)==0)
{
s-next=NULL;
break;
}
s=p;
for (i=0; i5; i++)
{
printf(“course\n”);
scanf(“%s”,p-s[i].name);
printf(“course score\n”);
scanf(“%d”,p-s[i].score);//注意scanf的输入格式
printf(“course credithour\n”);
scanf(“%d”,p-s[i].credithour);//同上
sum+=p-s[i].score;
}
p-average=sum/(i+1);
}
}
void main()
{
STU *L;
L=(STU *)malloc(sizeof(STU));
L-next=NULL;
Create(L);
}
C语言 如何在结构体中给嵌套的结构体赋值?
结构体嵌套,赋初值,大括号嵌套就可以了。
问题是你代码写错了。
你定义的old1不是结构类型,而是结构变量。
在shuju中成员要写struct old 变量名;
不能写struct old1。
下面是演示代码:(补充:如果想定义一个结构类型别名,要用typedef)
#include stdio.h
struct old
{
int year;
int month;
int day;
}old1={1972, 8, 3};
struct shuju
{
char name[10];
char gender[6];
int height;
struct old old1;
char access[9];
}shuju1={“moumouren”,”male”,175,{2019,6,29},”well”};
int main()
{
printf(“结构变量old1的初值: %d %d %d\n”,old1.year,old1.month,old1.day);
printf(“结构变量shuju1中成员old1的初值:%d %d %d\n”,shuju1.old1.year,shuju1.old1.month,shuju1.old1.day);
printf(“我特意起一样的名字,就是告诉你这两个变量是不一样的。\n”);
return 0;
}
/*(补充:如果想定义一个结构类型别名,要用
typedef struct old
{
int year;
int month;
int day;
}old1;//这样old1才表示是一个类型,然后再定义该类型变量时,才可以写 old1 变量名;
)*/