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++ 值传递和引用传递实战探究的主要内容,如果未能解决你的问题,请参考以下文章