C/C++中的引用传递和值传递

        在学习严蔚敏《数据结构(C语言版)》的过程中,在书本给出的函数原型上,见到了一从来没有见过的函数参数传递方式InitList(&L),并且会被c语言编译器报错,将源代码后缀名改为.cpp后即可正常编译,经查找资料和实验,总结出以下C/C++中函数参数的不同传递方法和性质。

值传递

        理论上,可以将C语言中的参数传递方式都称为值传递。值传递,故名思意,传递的是参数的值,而不是参数本身。例如:

int main()
{
   
	int a = 1, b = 2;
	printf("before a = %d b = %d\n", a, b);	//输出交换前a,b的值
	swap(a, b);
	printf("after a = %d b = %d\n&
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言C++语言在引用传递方面有一些区别。在C语言,没有直接支持引用传递的语法,而是通过指针传递来实现类似的功能。而在C++语言,引入了引用传递的概念,可以更方便地进行变量的传递和操作[^1]。 C语言的指针传递是通过将变量的地址传递给函数来实现的。在函数内部,可以通过指针来访问和修改原始变量的值。但是需要注意的是,在函数内部修改指针的值并不会影响到原始变量的地址。因此,如果想要修改原始变量的地址,需要传递指向指针的指针或者使用返回值来实现。 而在C++语言引用传递使用`&`符号来声明。通过引用传递,可以直接将变量本身传递给函数,而不是传递变量的地址。这样,在函数内部对变量的修改会直接影响到原始变量的值。这种方式更加直观和方便,可以避免使用指针的复杂性和可能的错误。 下面是一个示例,演示了C语言C++语言引用传递的区别: C语言的指针传递: ```c #include <stdio.h> void changeValue(int *ptr) { *ptr = 100; } int main() { int num = 10; printf("Before change: %d\n", num); changeValue(&num); printf("After change: %d\n", num); return 0; } ``` C++语言引用传递: ```cpp #include <iostream> void changeValue(int &ref) { ref = 100; } int main() { int num = 10; std::cout << "Before change: " << num << std::endl; changeValue(num); std::cout << "After change: " << num << std::endl; return 0; } ``` 运行以上代码,可以看到C语言使用指针传递和C++语言使用引用传递的结果是一致的,都将变量的值修改为100。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值