第讲C语言回顾精要.pptVIP

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

love + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档