A. c语言结构体嵌套
定义一个学期结构体,学期结构体中的4个元素类型为成绩结构体,再将这个学期结构体放到student中
B. C语言结构体的问题,一个嵌套,可是我写的好像有问题,初学求帮助解答,谢谢
你要用结构的要先定义一个结构的变量。
book结构里面的 struct author author; 这个结构变量定义变量名不要和结构类型名字一样。
struct book a; //book是类型名字。后面的a才是变量名。
scanf的输入格式控制符。%c是一个字符。如果是字符串的话是%s。
还有printf后面的参数表不要加地址符&;
还有那个循环是无意义的。。。输入两次。第二次覆盖第一次。
#include <stdio.h>
struct author
{
char FirstName[20];
char LastName[20];
char sex[10];
};
struct book
{
char title[20];
float value;
struct author bk;
};
int main()
{
int i;
struct book p;
printf("输入这本书的标题:\n");
scanf("%s",&p.title);
printf("输入这本书的价钱:\n");
scanf("%f",&p.value);
printf("输入这本书的作者姓和名:\n");
scanf("%s%s",&p.bk.FirstName,&p.bk.LastName);
printf("输入作者的性别:\n");
scanf("%s",&p.bk.sex);
printf("标题:%s\n",p.title);
printf("价格:%f\n",p.value);
printf("作者的姓和名:%s%s\n",p.bk.FirstName,p.bk.LastName);
printf("作者的性别:%s\n",p.bk.sex);
return 0;
}
C. C语言结构体嵌套问题
更正如下:注意语法
#include<stdio.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;
}
D. 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 ",old1.year,old1.month,old1.day);
printf("结构变量shuju1中成员old1的初值:%d %d %d ",shuju1.old1.year,shuju1.old1.month,shuju1.old1.day);
printf("我特意起一样的名字,就是告诉你这两个变量是不一样的。 ");
return 0;
}
/*(补充:如果想定义一个结构类型别名,要用
typedef struct old
{
int year;
int month;
int day;
}old1;//这样old1才表示是一个类型,然后再定义该类型变量时,才可以写 old1 变量名;
)*/
E. 【c语言共用体】里面嵌套有结构体,求详解。高分悬赏。谢谢
共用体就是享用同一块内存
在此例中
e的大小为最长元素的大小,也就是结构体out的大小,共两个int,假设此处int为4字节
e.c和e.d和e.out.a占用同一块内存,即低4字节的内存,a.out.b占用高4字节内存
然后e.c=1;e.d=2;
e.c和e.d和e.out.a都为2
e.out.a=e.c*e.d = 2*2 = 4;
那么e.c和e.d和e.out.a都变成了4
e.out.b=e.c+e.d = 4+4 = 8
F. 如何在C语言中嵌套定义结构体并VC6.0编译通过
struct structA;
struct structB;
typedef struct structA{
int a;
structB *pb;
}structA;
typedef struct structB{
int b;
structA *pa;
}structB;
先声明再定义,其实这个和函数声明和定义是一样的,咱们可以再main函数前面声明,但是定义可以放在main函数后面,是同一个道理。楼主学过编译原理吗?只要声明了,就有分配空间,虽然具体空间大小在定义处才知道,但是声明了,就会知道有这么个东西,会预留空间。所以只要声明就可以了
G. 关于c语言结构体嵌套的问题
早期纯C编译器要求结构体类型必须写上struct关键字,不能只写个结构体名。后来C++兼容的编译器则允许写结构体名就可以了。所以你在嵌套时结构体成员名前写上struct(struct Order order;)就在什么编译器下都能通过了……
H. c语言嵌套结构体代码求解
0开头的,说明是八进制数,八进制数里没有9,直接写成9就好了,不要写09,要不然就写成0x09
I. c语言中如何用子函数调用结构体中的变量实现数据的输入与输出。
用子函数实现结构体数据的输入与输出:对于多数子函数的输入与输出,有一定规律性可言。
方法1:void型不传值传址调用与声明。main中声明void date_in(),void date_pout()。函数定义前一定在main()前先定义结构体变量(全局变量),然后定义输入或输出程序段。此时再main()调用即可。
如下:
struct student
{
char name[20];
int old;
char sex;
}stu;
void date_in();
void main()
{ date_in();
}
void date_in()
{ scanf("%s%d/c,"stu.name,stu.old,stu.sex);
}时间问题程序有点简洁,有问题请追问,很乐意与你分享。