C语言中nwhite整形定义无效,C语言第8讲-结构体n课件.ppt

这篇博客深入讲解了C语言中的结构体和共用体的概念与使用。介绍了如何定义结构体类型和变量,以及结构体数组的运用。同时,详细阐述了指向结构体类型数据的指针的用法,包括如何通过指针访问结构体成员。此外,还展示了如何处理链表,包括链表的建立、输出和结点操作,并提供了相关示例代码。最后,提到了内存管理和链表操作中的注意事项。
摘要由CSDN通过智能技术生成

C语言第8讲-结构体n课件

第八讲-结构体与共用体;结构体与共用体;一、结 构 体;如: struct student { int num; char name[20]; char sex; int age; float score; char addr[30]; };;(2) 定义结构类型的同时定义结构变量;定义的一般形式:;(1) 类型与变量是不同的概念 ;4.结构体类型变量的引用;6. 结构体数 组;例:三个候选人,每次输入一个得票的候选人的名字, 最后输出各人得票结果;3;7. 指 向 结 构 体 类 型 数 据 的 指 针;(1) 指向结构体变量的指针;① p->n: 得到 p指向的结构体变量中的成员 n的值;例: struct student { int num; char name[20]; char sex; int age; }; struct student stu[3] = {{10101, "LiLin", 'M', 18}, {10102, "ZhangFun", 'M', 19}, {10104, "Wang Min", 'F', 20}};;② P=stu; 指向stu[0];①. 若 p 的初值为 stu ,即指向第一个元素,则 p+1指 向 下一个元素的起始地址。;例:有一个结构体变量stu,内含学生学号、姓名和三门课的成绩。 要求在main函数中赋以值,在另一函数print中将它们输出。;void print(p)struct studnt *p; { printf (format, p->num, p->name, p->score[0], p->score[1], p->score[2]); printf ("\n"); }; 其中 main 函数中最后一行调用 print 函数 ,也可改用print (stu); 即实参改用结构体变量(而不是指针)。;struct stu{int x; int *y; }*p;int s1[4]={10,20,30,40};struct stu a[4]={50,&s1[0],60,&s1[1],70,&s1[2],80,&s1[3]};main(){p=a;printf("%d ",++p->x);printf("%d ",(++p)->x);printf("%d ",++(p->x));printf("%d ",++(*p->y));printf("%d ",*++p->y);}; 用指针处理链表 ;3、free(ptr):释放由ptr指向的内存区。;链表结构的要点:1、对链表的操作:建立链表、输出链表、链结点的插入、删除、修改等操作2、创建新结点时,即:链表的新建、链表的插入。必须为链指针开辟存储空间: p1=(struct 结构体名 *)malloc (sizeof(struct 结构体名));3、对链表的操作以函数完成时,常创建一个带头节点的函数。4、结点中成员的访问。5、链指针的移动和尾指针为空。;8910189.5

;struct stu *creat( ) {struct stu *head, *p1, *p2; n = 0 ; p1=p2=(struct student *)malloc(sizeof(struct stu); scanf ("%d, %f", &p1->num, &p1->sco); head = NULL;

;while(p1->num! = 0){ n++; if(n == 1) head = p1; else p2->next = p1; p2 = p1; p1=(struct stu *)malloc(sizeof(struct stu)); scanf ("%ld,%f", &p1->num, &p1->score); } p2->next = NULL; return (head); };void print (head)struct student *hea

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值