苏州科技大学c语言试题,苏州科技大学电子与信息工程学院程序设计及c语言(提高篇)课件 第二章.ppt...

苏州科技大学电子与信息工程学院程序设计及c语言(提高篇)课件 第二章

C语言程序设计—提高篇 函数原型 void free(void *ptr); 功能  释放p所指的内存区,返回值无。 3.free函数  计算所给数据类型type的字节数,主要用来计算链表中结点所占动态存储空间的字节数。 4.sizeof运算符 1.指向某一结构的指针的说明方式 struct 结构名 *变量名; struct {成员说明表列}*变量名; 2.将一个函数的返回值说明为指向某结构的指针的说明方法 struct 结构名 *函数名(形参说明表列) { … … …//函数体; } struct student { char name [10]; char sex; int age; float score; char addr[20]; }x1; 结构指针变量举例 则p为结构指针变量,它可用来存放student型变量的地址 num name … addr p? x1 令p=&x1; 则 p为x1的首地址 struct student ?p; (?p).name (?p).score … 或者用“ ? ”运算符, p? num, p?name, p ?score. 称?为指向运算符, “ ? ”优先级高于++, – –。 则:p ?num+1?(x1.num)++ ++p?num ?++(x1.num) 先使用x1.num, 再加1 先使x1.num加1,再用x1.num 访问x1的成员: 小结: 引用结构变量中的成员有三种方法: (2) 用指针变量 (?p).成员名 (?p).num (3) 用指向运算符?成员名 p ?num (1) 结构体变量名.成员名 x1.num 注意:指针变量p必须是结构指针型, 且有p=&x1; 例:请指出下列程序的错误所在: struct person { char name[20]; int count; } x1={"ZhongHua", 10}; main( ) { int *p; p=&x1; printf ("%s\n%d\n", (*p).name, (*p).count) } 错误的原因:p不是结构指针变量 可改为:struct person *p 3.指向结构体数组的指针 与指向数组的指针一样,可用指针指向结构体数组。 struct student{ int num; char name[20]; char sex; int age; }; void main ( ) { struct student stu[3]={{10101, "Li Lin ", 'M', ?}, {…}, {…}}; struct student ?p; p=stu; while (p struct person{ char name[20]; int count; }x[3]={{"zhao", 4},{"qian",3},{"sun",6}}; void prt(struct person *pp); void main( ) { int i; for(i=0;i<3;i++) prt(&x[i]); } void prt (struct person *pp) { printf("%s, %d\n", pp->name, pp->count); } 运行结果: zhao, 4 qian, 3 sun, 6 2.9用typedef定义类型 typedef 的用途:用自定义名字为已有数据类型命名,为结构类型建立别名 typedef 的作用:简化结构变量的定义 1.建立别名 typedef 如:struct person { char name[20]; int age; char tel[15]; }; typedef struct person Person 2.结构变量定义 直接用别名作为类型标识 如:Person student; 说明: typedef 没有创造新数据类型 typedef 是定义类型,不能定义变量 typedef 与 define 不同 define是预编译时处理时简单字符置换 typedef是编译时处理为已有类型命名 2.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值