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



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 维指针本身 及 以下的内容 ;

发布了291 篇原创文章 · 获赞 1034 · 访问量 169万+

猜你喜欢

转载自blog.csdn.net/han1202012/article/details/104692565