C/C++ 参数传递

本文的目的,是带大家了解参数传递到底传的是什么东东?如果读者很了解这块,请绕道。


参数传递主要有3种,值传递、指针传递、引用传递。

值传递:形参另开一片内存,把实参的值拷贝至这片内存。

指针传递:形参另开一片内存,把实参的值拷贝至这片内存。(哈哈,和值传递一样,只是这里实参的值是一个地址)

引用传递:形参不用另开内存,引用变量的地址就是实参的地址,即形参和实参是同一片内存。


实参变量和形参变量之间的数据传递是单向的“值传递”方式。指针变量作函数参数也要遵循这一规则。
形参指针变量不能改变实参指针变量的值(一个地址),但可以变量实参指针变量所指向的值(这个地址的值)。


存在一个整型变量i,初始值是5。

1. 通过函数调用传递给形参v。值传递效果如下图a:


2. 通过函数调用传递给形参ip。指针传递效果如下图b:


3.通过函数调用传递给形参ir。指针传递效果如下图c:



下面看代码运行

void show_value_address(int v) {
	cout << "&v = " << &v << endl;
}

void show_pointer_address(int* ip) {
	cout << "ip = " << ip << endl;
	cout << "&ip = " << &ip << endl;
}

void show_reference_address(int& ir) {
	cout << "&ir = " << &ir << endl;
}

void main() {
	int i = 5;

	cout << "&i = " << &i << endl;

	show_value_address(i);

	show_pointer_address(&i);

	int* i_p = &i;
	cout << "i_p = " << i_p << endl;
	cout << "&i_p = " << &i_p << endl;
	show_pointer_address(i_p);

	show_reference_address(i);
}

输出结果:

&i = 0016FDE4

&v = 0016F866

ip = 0016FDE4
&ip = 0016FD04

i_p = 0016FDE4
&i_p = 0016FDD8
ip = 0016FDE4
&ip = 0016FD04

&ir = 0016FDE4


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值