C++ 值传递和引用传递实战探究

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 值传递和引用传递实战探究相关的知识,希望对你有一定的参考价值。

文章目录

前言

最近整理博文,发现草稿箱里堆积了200+,这两天重新理清了很多发了出去,近两年一直在学前端和Java,看到这篇C++也挺感慨的,想起当年攻克C++,就仿佛昨天在刷题一样。
无论学什么,都要坚强要加油

一开始也忘了这篇主题讲的啥了,我就边整理边想了,写多少是多少了,大家要是觉得有用就评论下我再详细整理,要是没用我就删了

这篇好像是传值探究?

c++分值传递与引用传递
java只有值传递

具体不细说了,之前整理过,按照我的逻辑,直接实战代入下:

写了个代码给大家理解

一年半前写的代码:

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string>

using namespace std;

// 引用:传进来的是原变量
void test1(int& a1)

	cout << "a1=" << a1 << endl;
	cout << "&a1=" << &a1 << endl;

// 传地址值:传进来的是地址的拷贝副本,但是地址指向的还是原变量
void test2(int* b1)

	cout << "b1=" << b1 << endl;
	cout << "*b1=" << *b1 << endl;
	cout << "&b1=" << &b1 << endl;

// 传值:传进来的是变量的拷贝
void test3(int c1)

	cout << "c1=" << c1 << endl;
	cout << "&c1=" << &c1 << endl;


int main()

	cout << "引用:=====================================" << endl;
	int a = 2;
	test1(a);
	cout << "a=" << a << endl;
	cout << "&a=" << &a << endl;

	cout << "传地址值:=====================================" << endl;
	int* b = new int;
	*b = 3;
	test2(b);
	cout << "b=" << b << endl;
	cout << "*b=" << *b << endl;
	cout << "&b=" << &b << endl;

	cout << "传值:=====================================" << endl;
	int c = 4;
	test3(c);
	cout << "c=" << c << endl;
	cout << "&c=" << &c << endl;

	return 0;

一年半前运行结果如下:


今个重新运行了下并简单解读了读:

总结

  • 引用,地址与值都一样

  • 传地址值,地址值一样,但是存这个地址的地址不一样,因为当前传进来的地址是原来变量地址的拷贝,最后他俩解引用后指向的变量值是一样的

  • 传值,完全拷贝一个变量,只是值一样

以上是关于C++ 值传递和引用传递实战探究的主要内容,如果未能解决你的问题,请参考以下文章

值传递,指针传递;引用传递(c++独有)本质

C++ 值传递指针传递引用传递详解

C++中值传递指针传递引用传递的总结

在 C++ 中通过引用/值传递

JS基础类型和对象,分别是按值传递还是按引用传递?

在 C++ 中通过引用和值传递字符串