全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言中的二级指针(双指针) 原创作品,转载请标明出处/yming0221/article/details/7220688 二级指针又叫双指针。C语言中不存在引用,所以当你试图改变一个指针的值的时候必须使用二级指针。C+中可以使用引用类型来实现。下面讲解C中的二级指针的使用方法。例如我们使用指针来交换两个整型变量的值。错误代码如下:一级指针cpp view plaincopyprint?1. #include 2. 3. voidswap(int*a,int*b)4. 5. int*tmp=NULL;6. tmp=a;7. a=b;8. b=tmp;9. 10. 11. intmain(intargc,int*argv)12. 13. inta=2;14. intb=3;15. printf(Beforeswapa=%db=%dn,a,b);16. swap(&a,&b);17. printf(Afterswapa=%db=%dn,a,b);18. return0;19. 输出的结构如下: 结果分析:不论是数值还是指针,swap函数中的参数传递的是总是值,所以在上述函数中即使a和b的地址已参数传递给swap函数,而在函数内交换的是a和b的值(main函数中a的地址和b的地址),而交换完毕,函数相应的参数从栈中弹出,并不能返回给调用函数,所以该swap函数中的操作是徒劳。这里完全可以直接交换a和b的值,不过如果a和b不是一个32位的整型变量,而是一个复杂的数据结构,这样做会降低效率。如下;cpp view plaincopyprint?1. voidswap(TYPE*a,TYPE*b)2. 3. TYPEtmp;4. tmp=*a;5. *a=*b;6. *b=tmp;7. 二级指针下面是使用二级指针分配内存的例子cpp view plaincopyprint?1. #include 2. #include 3. #include 4. voidmemorylocate(char*ptr)5. 6. *ptr=(char*)malloc(10*sizeof(char);7. 8. intmain(intargc,int*argv)9. 10. char*buffer;11. memorylocate(&buffer);12. strcpy(buffer,12345);13. printf(buffer%sn,buffer);14. return0;15. 总结:1、当操作二维数组时传递参数2、当想改变指针的值的时候不妨考虑使用二维指针。博主,你确定二级指针是这样用吗,你确定你不是在误导人吗?swap函数的形参是二级指针,但是你传实参的时候明显是个一级指针啊,这样编译都会有警告(我是mingwin gcc 默认编译)。正确的应该是这样#include void swap(int *a, int *b)int tmp;printf(swap(): a=%#x, b=%#xn, a, b);printf(swap(): &a=%#x, &b=%#xn, &a, &b);tmp = *a;*a = *b;*b = tmp;int main()int a = 2;int b = 3;printf(main(): &a=%#x, &b=%#xn, &a, &b);swap(&a, &b);printf(main(): after swap a=%d,b=%dn, a, b);return 0;输出结果:main(): &a=0x22ff4c, &b=0x22ff48swap(): a=0x22ff4c, b=0x22ff48swap(): &a=0x22ff30, &b=0x22ff34main(): after swap a=3,b=2看
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 改装车车身加强结构创新创业项目商业计划书
- 搪瓷制品修整机升级创新创业项目商业计划书
- 复古风格组合柜创新创业项目商业计划书
- 2025年秋人教版小学数学六年级上册期末质量检测试卷及参考答案
- 地质雷达图像拼接算法创新创业项目商业计划书
- 天津市教育招生考试院信息化软硬件购置项目采购需求
- 2025年电影产业数字化粉丝经济运营岗位晋升考核试卷
- 大数据技术在经济责任审计中的应用与实践
- 2025年阿拉善盟辅警招聘考试题库及答案详解(名师系列)
- 2025年淮安辅警协警招聘考试备考题库附答案详解(夺分金卷)
- 工程分包资料管理制度
- 药品抵款协议书
- 挂靠劳务资质协议书
- 河南2025年生态环境部黄河流域生态环境监督管理局生态环境监测与科学研究中心招聘笔试历年参考题库附带答案详解
- 《矿井运输提升》课件
- 项目管理经验分享总结
- 废油回收协议书5篇
- 朝鲜族介绍课件
- 2025年健康管理师考试体重管理试题及答案
- 2025年仓库管理成本控制策略
- 行政应诉知识培训课件
评论
0/150
提交评论