全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指针及函数的的参数传递李伟军本文分为两大类,一类为指针,另一类为函数的说明,两者分别分为C和C+进行说明;主要是对函数的说明,主要都用例子进行说明。一、 指针:1. C:如:int a = 3; /这句话在存储器里开出一定的空间来存储a;int *pa = &a; /这名话在存储器里开出一定的空间来存储pa; /总结说明:不要把指针当什么特殊的东西,它也是一个变量,只是用来存储别人的地址的,在上面有关系里有:*paa;因此对pa的操作不影响a或者是&a,但对*pa的操作就是对a的操作。2. C+:C中的描述都适用在C+中,只是在C+中又引入了引用这一概念。如: int a = 3; /这句话在存储器里开出一定的空间来存储a; int& ad = a; /这句话并不开辟空间来存储ad;/总结说明:引用就是取了个别名,不是新的变量,在上面的关系里有 ada;因此对ad的操作就是对a的操作。二、 函数:1. C :1.) 函数的声明:返回类型 函数名(形参表);2.) 函数的定义:即函数的实现,返回类型 函数名(形参表)实现内容3.) 函数的调用:函数名(实参表);4.) 参数的传递:参数的传递准确的说只有值传递,就像之前说有不要把指针当做什么特殊的东西。但很多人还是把值传递分成 值传递 和 地址传递。a.) 一般的值传递:如:函数的声明:void func(int d1);函数的调用:int a = 2;func(a); /此时在后台执行了d1 = a;/总结说明:因为进行了值的赋值,因此在 func内部使用d1就和a无关,即在函数内部的操作不会影响到a的值。b.) 指针式的值传递(即地址传递):如:函数的声明:void func(int* pd1);函数的调用:int a = 2;func(&a); /此时在后台执行了pd1 = &a;/总结说明:因为进行了值的赋值,因此在func内部使用pd1就在a或者&a无关,不会影响在a的值;而*pd1a,因此对*pd1的操作就是对a的操作,即所谓的在函数内部修改外部的值。由a. b. 可以看出,一般的值传递和指针式的值传递在本质上是一样的,再看过C+中的引用传递之后你会发现真正的不同。5.) 通过返回值传值:a.) 一般的值传递:如:函数的定义:int func( )int t1 = 3;return t1;出这个花括号前t1会被销毁;函数的调用:int a = func( );此时后台进行的操作有:i. int temporary = t1;ii. 销毁t1;iii. 出花括号;iv. a = temporary;v. 销毁temporary。b.) 指针式的值传递:如:函数的定义:int* func( )int t1 = 3;return &t1;出这个花括号前t1会被销毁;函数的调用:int* a = func( );此时后台进行的操作有:i.) int* temporary = &t1;ii.) 销毁t1;iii.) 出花括号;iv.) a = temporary;v.) 销毁temporary。vi.)/注意,因为*temporary就是t1,而t1在出函数时已被销毁,因此这个函数的编译会产生warning,准确的说,这种使用方式是不正确的。正确的使用是,返回的值在出函数时能正常的存在就可以了,如:返回的是全局变量的地址,static变量的地址,用malloc申请的堆空间。int* func( )int* t1 = (int*) malloc(sizeof(int); *t1 = 3;return t1;2. C+:1.) 参数的引用传递:之前在C中所有的参数传递方式都适用在C+中,C+又引入了引用传递。a.) 一般的引用:函数的声明:void func(int& d1);函数的调用:int a = 2;func(a);后台认为:d1a;因此对d1的操作就是对a操作,d1并没有开辟出新的空间。b.) 指针的引用:函数的声明:void func(int*& d1);函数的调用:int a = 2;func(&a);后台认为:d1&a;因此对d1的操作就是对&a操作,d1并没有开辟出新的空间对*d1的操作就是对a的操作。2.) 传回值的引用传递:如:函数的定义:int& func( )int t = 3;return t;函数的调用:int a = func();执行顺序:i.) int temporary t; /无空间的开辟ii.) 销毁t;iii.) 出花括号;iv.) a = temporary;v.) 不进行temporary进行销毁,因为它(即t)已经被销毁过了;/注意,因为temporary就是t,而t在出函数时已被销毁,因此这个函数的编译会产生warning,准确的说,这种使用方式是不正确的。3.) 类成员函数的调用:如:类的声明和定义:class AAAint di;public:void func(int d1)dd = d1; /this-dd = d1;类成员函数的调用:int d = 3;AAA aaa;aaa.func(d); /用类的对象进行调用;后台进行如下的操作:/AAA*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能交通系统设计与城市道路优化方案
- 医院临床用血管理操作规范实例
- 住院患者疼痛评估操作规范
- 连锁超市库存管理控制方案
- 职业培训机构教学活动策划方案
- 小学数学角度几何专题专题训练
- 小学英语词汇拓展训练及应用指导方案
- 具身智能+特殊需求人群无障碍交互式环境智能适配方案可行性报告
- 建筑面油漆施工方案
- 人工挖孔灌注桩施工应急预案方案
- 低应变桩身完整性检测
- 2024年山东省水利安全生产知识竞赛考试题库(含答案)
- 2024年大唐陕西发电有限公司招聘笔试参考题库含答案解析
- 全球职等系统GGS职位评估手册
- 汉语写作与百科知识考研试题
- 学生集体外出活动申请及情况记录表
- 国网基建各专业考试题库
- 品质保证协议书
- 2023年遵义市湄潭县总工会基层工会社会工作者招聘考试试卷真题
- 数字电子技术知到章节答案智慧树2023年山东理工大学
- 大坝加固水闸计算书
评论
0/150
提交评论