前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

【C++】函数 指针类型参数 与 引用类型参数 对比 ( 修改外部变量需要传入的参数要求 | 参数作返回值 )

作者头像
韩曙亮
发布2023-03-27 18:06:08
2.2K0
发布2023-03-27 18:06:08
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

代码语言:txt
复制
        - [I . 博客总结 . 指针与引用类型参数](https://cloud.tencent.com/developer)
        - [II . 指针作为参数和返回值](https://cloud.tencent.com/developer)
        - [III . 引用参数简介](https://cloud.tencent.com/developer)
        - [IV . 引用作为参数和返回值](https://cloud.tencent.com/developer)
I . 博客总结 . 指针与引用类型参数

1 . 讨论问题 : 本章只针对一点进行讨论 , 那就是对两种类型的参数修改 , 是否影响到外部的变量 ; 传入什么样的参数才能修改外部变量 , 即 参数当返回值使用 ;

2 . 如果要在函数中修改 N 维指针指向 :

① 使用指针作为参数 : 必须传入 N + 1 维 ( 及以上 ) 指针参数 , 才可以修改 N 维指针的指向 ;

② 使用引用作为参数 : 可以传入 N 维指针的引用作为参数 , 就可以修改 N 维指针的指向 ;

3 . 参数使用语言环境 : 引用类型参数只能在 C++ 环境中使用 , 指针类型参数可以用于 C / C++ 两种语言环境中 , 因此很多基础库 如 FFMPEG , OpenSL ES 等使用的都是指针类型参数 ;

II . 指针作为参数和返回值

指针作为参数和返回值 : 如果是指针作为参数 , 修改 N 维指针指向的地址 , 那么需要传入 N + 1 维指针 , 传入指向该 N 维指针 的指针参数 ( N + 1 维指针 ) , 才能在函数中修改该 N 维指针的指向 ;

① 一维指针参数 : 传入一维指针 , 只能修改指向的内存的内容 ; 修改一维指针本身指向无意义 ;

② 二维指针参数 : 传入 二维指针 , 只能修改一维指针 及 以下的内容 ; 修改二维指针本身指向无意义 ;

③ N 维指针参数 : 传入 N 维指针 , 只能修改 N - 1 维指针 及 以下的内容 , 修改 N 维指针内容 无意义 ;

更多内容参考 【Android FFMPEG 开发】FFMPEG 方法中指针类型参数说明 ( 一维指针类型参数 | 二维指针类型参数 )

III . 引用参数简介

1 . C 语言中的参数 分类 :

① 普通变量参数 : C 语言中 普通变量 ( 非指针变量 ) 作为参数 , 只能进行值传递 , 不能通过参数返回结果 ;

② 指针变量参数 : C 语言中 , 如果要让函数的参数可以将结果返回 , 则必须使用指针作为参数 ;

2 . C++ 中的引用参数 : C++ 在 C 语言基础上扩展了 引用 数据类型 , 使用引用可以替代上面的指针作为参数的情况 , 使参数具有返回结果的能力 ;

3 . 作用及意义 :

① 具有返回值能力 : 使用引用作参数 , 可以将参数当做返回值使用 ;

② 提高参数传递效率 : 大型对象作参数时 , 使用引用类型 , 可以提高参数传递效率 ;

更多关于引用的内容参考 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

IV . 引用作为参数和返回值

引用作为参数和返回值 : 如果是引用作为参数 , 修改 N 维指针指向的地址 , 那么需要传入 N 维指针的引用即可 ,在函数中修改该引用 , 即可修改外部的被引用的变量 ;

① 一维指针引用参数 : 传入一维指针引用 , 可以完全修改该指针本身的指向 ;

② 二维指针引用参数 : 传入 二维指针 , 可以修改二维指针本身 及 以下的内容 ;

③ N 维指针引用参数 : 传入 N 维指针 , 可以修改 N 维指针本身 及 以下的内容 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • I . 博客总结 . 指针与引用类型参数
      • II . 指针作为参数和返回值
        • III . 引用参数简介
          • IV . 引用作为参数和返回值
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档