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

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

文章目录

I . 博客总结 . 指针与引用类型参数

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

III . 引用参数简介

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



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


目录
相关文章
|
15天前
|
缓存 安全 编译器
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
《C++面试冲刺周刊》第三期聚焦指针与引用的区别,从青铜到王者级别面试回答解析,助你21天系统备战,直击高频考点,提升实战能力,轻松应对大厂C++面试。
61 10
C++面试周刊(3):面试不慌,这样回答指针与引用,青铜秒变王者
|
16天前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
113 12
|
3月前
|
存储 算法 安全
c++模板进阶操作——非类型模板参数、模板的特化以及模板的分离编译
在 C++ 中,仿函数(Functor)是指重载了函数调用运算符()的对象。仿函数可以像普通函数一样被调用,但它们实际上是对象,可以携带状态并具有更多功能。与普通函数相比,仿函数具有更强的灵活性和可扩展性。仿函数通常通过定义一个包含operator()的类来实现。public:// 重载函数调用运算符Add add;// 创建 Add 类的对象// 使用仿函数return 0;
109 0
|
9月前
|
存储 程序员 C++
深入解析C++中的函数指针与`typedef`的妙用
本文深入解析了C++中的函数指针及其与`typedef`的结合使用。通过图示和代码示例,详细介绍了函数指针的基本概念、声明和使用方法,并展示了如何利用`typedef`简化复杂的函数指针声明,提升代码的可读性和可维护性。
249 1
|
10月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
529 4
|
11月前
|
存储 安全 编译器
在 C++中,引用和指针的区别
在C++中,引用和指针都是用于间接访问对象的工具,但它们有显著区别。引用是对象的别名,必须在定义时初始化且不可重新绑定;指针是一个变量,可以指向不同对象,也可为空。引用更安全,指针更灵活。
|
10月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
806 13
|
12月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
424 4
|
11月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
134 0
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下