C++中指针引用的示例分析

技术C++中指针引用的示例分析这篇文章主要介绍C++中指针引用的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进

本文主要介绍C语言中指针引用的实例分析,非常详细,具有一定的参考价值。感兴趣的朋友一定要看完!

指针和引用在形式上有很大的不同,但它们似乎都有相同的功能,它们可以直接引用对象并直接操作它们。

首先,引用不能为空,但是指针可以为空。如前所述,引用是对象的别名。如果引用为空,则——对象不存在。怎么会有化名?因此,在定义引用时,必须对其进行初始化。所以如果你有一个指向另一个对象的变量,但是它可能是空的,那么你应该使用一个指针;如果变量总是指向一个对象,即您的设计不允许变量为空,那么您应该使用引用。

像指针一样,指针的引用令人困惑。

我们注意到如下语法

voidfunc(int*x)

{

x;

}我猜你可能对int *x x有点困惑。

它叫指针的引用.

Int*x不要觉得看起来复杂,其实一点都不复杂。

让我打开让你看看:

根据C程序员的习惯,指针“*”符号与类型放在一起。

c是一个参考符号。

我们应该注意到“引用”并不产生副本,而是给原始变量一个别名。

对引用的操作是对原始变量的操作。

所以就这样:

Int*x一目了然!

对指针变量本身的修改无法作用到原指针变量,

所以需要通过引用来实现修改指针变量。

我将使用两个图表来告诉您指针引用为什么有用:

C++中指针引用的示例分析

C++中指针引用的示例分析

00-1010拿个栗子。

我将使用代码向您解释什么是本地修改:

# includestdio.h

voidswap(int*p1,int * p2){ 0

int * temp=p1

p1=p2

p2=温度;

Printf('交换条件:a=%d,b=%d\n ',*p1,* p2);

Printf ('in exchange(地址):p1=%d\n ',P1);

Printf('交换(地址):p2=%d\n ',p2);

}

int main(){ 0

inta=1,b=3;

int*p1=a,* p2=b;

//交换之前

Printf('交换前:a=%d,b=%d\n ',*p1,* p2);

Printf('交换前(地址):p1=%d\n ',P1);

Printf('交换前(地址):p2=%d\n ',p2);

//作为交换

交换(p1,p2);

//交换之后

Printf('交换后:a=%d,b=%d\n ',*p1,* p2);

Printf('交换后(地址):p1=%d\n ',P1);

Printf('交换后(地址):p2=%d\n ',p2);

返回0;

}猜猜结果。

输出结果:

之前:a=1,b=3

交换前(地址):p1=6422028

交换前(地址):p2=6422024

作为交换:a=3,b=1

交换(地址):p1=6422024

交换(地址):p2=6422028

交换后:a=1,b=3

交换后(地址):p1=6422028

交换后(地址):p2=6422024

运行截图

C++中指针引用的示例分析

执行swap()函数时,它正在执行。

C++中指针引用的示例分析

可以发现,在执行swap()函数时,确实修改了地址,交换了A和B的值。

C++中指针引用的示例分析

然而,当我们在main()函数中输出A和B时,根本没有交换。

什么叫局部修改?

同样的代码,我只换一个地方。

C++中指针引用的示例分析

让我们看看会发生什么。

运行截图

C++中指针引用的示例分析

之前:a=1,b=3

交换前(地址):p1=6422044

交换前(地址):p2=6422040

交换:a=3,b=1

交换(地址):p1=6422040

交换(地址):p2=6422044

交换后:a=3,b=1

交换后(地址):p1=6422040

交换后(地址):p2=6422044

我简单的加了一句“”,太神奇了!

所以我们可以发现:

指针的引用能够全局修改指针变量!

引用是C++中很强大的语法,在编程中极其实用。

理解这种语法至关重要,因为它广泛用于树和图算法。

以上就是《C语言指针引用实例分析》一文的全部内容,感谢阅读!希望分享的内容对大家有所帮助。更多相关知识,请关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/82730.html

(0)

相关推荐

  • VSCode如何进行安卓开发

    技术VSCode如何进行安卓开发这篇文章给大家介绍VSCode如何进行安卓开发,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。vs code 大部分是由 ts 编写,上层 UI 可以运行在各个系统的浏

    攻略 2021年11月24日
  • person复数,person有没有复数形式

    技术person复数,person有没有复数形式person的复数形式是peopleperson复数。person 英[ˈpɜ:sn] 美[ˈpɜ:rsn]n. 人; (语法) 人称; 身体; 容貌;[例句]At lea

    生活 2021年10月27日
  • 计算机速成课 第八集 指令和程序

    技术计算机速成课 第八集 指令和程序 计算机速成课 第八集 指令和程序1. 给 CPU 一些指令来运行CPU 强大,是因为可编程
    写入不同指令,就会执行不同任务
    是一块硬件,可以被软件控制2. 举例:0

    礼包 2021年12月9日
  • 笔记本电脑怎样截屏,笔记本电脑怎么选择性截图

    技术笔记本电脑怎样截屏,笔记本电脑怎么选择性截图电脑自带截图 我们的电脑其实本身就有截图功能,只是很多人不知道而已,今天小编就将电脑自带截图的使用方法分享给大家,希望对大家有所帮助笔记本电脑怎样截屏! 电脑的自带截图的使

    生活 2021年10月25日
  • Ajax具体指的是什么

    技术Ajax具体指的是什么Ajax具体指的是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。  AJAX即“AsynchronousJavascrip

    攻略 2021年11月26日
  • Spring Cloud Gateway的断路器(CircuitBreaker)功能

    技术Spring Cloud Gateway的断路器(CircuitBreaker)功能 Spring Cloud Gateway的断路器(CircuitBreaker)功能欢迎访问我的GitHub
    h

    礼包 2021年11月19日