- 1、本文档共88页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第讲C语言回顾精要.ppt
结构体变量中成员的引用 2 .若成员本身又属一个结构体类型,只能对最低级的 成员进行赋值或存取以及运算。 如:student1.birthday.year 3. 对成员变量可以象普通变量一样进行各种运算,如 sumage=student1.age+student2.age; 指向结构体的指针 定义形式: struct 结构类型名 * 指针变量名 举例 struct student stu,*p; p=stu; 指向结构体的指针 用指针变量可间接访问它所指向的结构体类型变量的各个成员 格式: 指针变量名-成员名 例:p-age = 18; (*指针变量名) · 成员名 例:(*p) · age = 18 结构体变量访问成员:stud1.age 指向结构体的指针 struct student *p = NULL; p是指针,指向 struct student类型变量 struct class{ char *name; /* 班级名称 */ int count; /* 学生数 */ }; 指针作为结构体成员 struct class{ char *name; int count; student *p; /* 指向学生结构体类型变量的指针作为成员 }; 指向结构体的指针 自引用结构,成员是指向同类型变量的指针 struct class{ char *name; /* 班名字 */ int count; /* 学生数 */ struct class *node; /* 下一个班级 */ } struct class 类型的成员 node, 指向一个struct node 类型变量 动态分配内存 局部的自动变量在栈上分配,函数返回后变量销毁 在堆上动态的分配内存,整个进程都可见,在手动释放之前一直存在 程序根据需要向操作系统申请一块内存 必须在代码里面显式的释放,否则造成内存泄露 动态分配内存 void * malloc(size_t size) 头文件stdlib.h size指定分配内在的大小,以字节为单位 返回指向所分配内存的指针 分配失败,返回NULL,系统已无可用内存 分配成功后,转成我们希望使用的类型 void *ptr = malloc( sizeof(int) ); int *num = (int *)ptr; 分配4个字节,并把分配的内存当作int使用 动态分配内存 void free( void *ptr ); stdlib.h 释放先前动态分配的内存 应用程序结束前用free把申请的内存还给系统 free( ptr ); 函数参数传递 函数参数传递的几种方式 数组作为函数参数 函数返回值需要注意的问题 函数参数传递 void Exchg1(int x, int y){? ? int tmp;? ? tmp = x;? ? x = y;? ? y = tmp;? ? printf(x = %d, y = %d\n, x, y);}main(){? ? int a = 4,b = 6;? ? Exchg1(a, b);? ? printf(a = %d, b = %d\n, a, b);? ? return(0);}输出的结果为:x = ____, y=____.a = ____, b=____. 函数参数传递-值传递 原来,其实函数在调用时是隐含地把实参a、b 的值分别赋值给了x、y,之后在你写的Exchg1函数体内再也没有对a、b进行任何的操作了。交换的只是x、y变量。并不是a、b。因此a、b的值没有 改变! 函数只是把a、b的值通过赋值传递给了x、y,函数里头操作的只是x、y的值并不是a、b的值。这就是所谓的参数的值传递了。 函数参数传递 void Exchg3(int x, int y){? ? int tmp = x;? ? x = y;? ? y = tmp;? ? printf(x = %d,y = %d\n, x, y);}main(){? ? int a = 4;? ? int b = 6;? ? Exchg3(a, b);? ? printf(a = %d, b = %d\n, a, b);? ? return(0);}输出的结果为:x=____, y=____.a=____, b=____. 函数参数传递-引用传递 Exchg3函数的定义处Exchg3(int x, int y)。参数x、y是in
您可能关注的文档
- 第四节动态评价指标的计算精要.ppt
- 第四节化学反应进行的方向精要.ppt
- 第四节单细胞生物人教版精要.ppt
- 第四节单调与凹凸精要.ppt
- 第四节单调性与凹凸性精要.ppt
- 第四节单调性凹凸性精要.ppt
- 第四节受精作用精要.ppt
- 第四节口腔颌面部精要.ppt
- 第四节地形图的判读(第一课时精要.ppt
- 第四节地球的结构精要.ppt
- DGTJ08-2137-2022 既有公共建筑节能改造技术标准.docx
- DGTJ08-803-2013 建筑幕墙安全性能检测评估技术规程.docx
- DGTJ08-2280-2018 民防工程安全使用技术标准.docx
- DGTJ08-1105-2010 移动通信室内信号覆盖系统设计与验收规范.docx
- DGTJ08-2292-2019 预应力钢筒混凝土顶管应用技术标准.docx
- DGTJ08-2445-2024 城镇排水管渠在线监测技术标准.docx
- DGTJ08-2451-2024 电动自行车集中充电和停放场所设计标准.docx
- DGTJ08-227-2020 预拌混泥土生产技术标准.docx
- DGTJ08-019-2018 建筑索结构技术标准.docx
- DGTJ08-2075-2022 管线定向钻进技术标准.docx
文档评论(0)