关于c/c++中传值,传引用,传值

  每次声明一个变量(不包含static),变量都会有它的生命周期,当它被使用完毕(包含它的函数执行完成),走下一条语句的时候,变量的内存空间就被销毁了。

变量的作用范围,可以看作为,包含声明变量的最近的大括号所包含的范围,如果在该范围内有其他的大括号,而且该大括号内声明了一个同类型同名的变量,那么就相当于又开辟了一个新的内存空间,

来存储这个新的变量,变量名相同但是存储空间不同,是不等同的。

  在将实参传入形参的时候,都是发生了一个声明且赋值的操作。 例如:add(int a,int b)  调用add(1,2) 时就发生了 int a=1,int b=2 这样的操作。

add(int a,int b)中a,b的作用范围就是这个函数的整个函数体,当这个函数调用结束,走其他的语句的时候a,b就被销毁了。

传值,就是将变量的值拷贝一份复制给参数列表中的形参,这之后就与原来的变量没有关系了。

传引用,就是对引用所绑定的对象进行操作,只要引用对应的对象没有被销毁,就可以一直使用。

传值,由于要先拷贝值,还要开辟新的内存空间,其效率比传引用要低许多。

指针和引用的区别:

  1. 引用在定义时必须初始化,指针没有要求

  2. 引用在初始化时引用一个实体后,就不能再引用其他实体而指针可以在任何时候指向任何,一个同类型实体

  3. 没有NULL引用,但有NULL指针

  4. 在sizeof中含义不同:引用结果为引用类型的大小,但指始终是地址空间所占字节个数(32位平台下占4个字节)

  5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小

  6. 有多级指针,但是没有多级引用

  7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理

  8. 引用比指针使用起来相对更安全    

#include<iostream>
using namespace std;

int Add(int a, int b)
{
	int c = a + b;
	return c;
}

int main()
{
	int ret=Add(1,2);
	cout << "ret:" << ret << endl;
	return 0;
}
这段代码的结果是一个随机地址
posted @ 2022-04-05 14:27  阿铛(cheng)  阅读(75)  评论(0)    收藏  举报