C语言笔记8 •传值调用&传址调用•

传值调用&传址调用

这篇博客介绍一下传值调用和传址调用,先看以下代码:

void swap(int m, int n)
{
	int temp = 0;
	temp = m;
	 m = n;
	 n = temp;
}

int main()
{
	int a = 10;
	int b = 20;
	printf("交换前a=%d,b=%d\n", a, b);
	swap(a, b);
	printf("交换后a=%d,b=%d", a, b);

	return 0;
}

对于以上代码运行后发现它并没有交换它们的值,像这样要对主调函数实参内容进行更改而不只是单纯的进行数值计算就要用到传址调用。见下图:

a和m地址不一样,b和n的地址也不一样,这样不是对实参a和b的值进行交换的。所以要进行传址调用

void swap(int* m, int* n)
{
	int temp = 0;
	temp = *m;
	*m = *n;
	*n = temp;
}

int main()
{
	int a = 10;
	int b = 20;
	printf("交换前a=%d,b=%d\n", a, b);
	swap(&a, &b);
	printf("交换后a=%d,b=%d", a, b);

	return 0;
}

这样就进行了交换。其实传值调用在一些场合也是可以使用的:

int add(int m, int n)
{
	int c = 0;
	c = m + n;
	return c;
}

int main()
{
	int a = 10;
	int b = 20;
	add(a, b);
	printf("两数之和等于%d\n", add(a, b));
	return 0;
}

总结:

传值调⽤:函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝,实参传递给形参的时候,形参会单独创建⼀份临时空间来接收实参,对形参的修改不影响实参,进而实参和形参的地址是不一样的,不会真正意义上的访问主调函数中的参数值,只是拿来使用。

传址调⽤:函数可以传址调用,传址调用的时候,可以通过形参操作实参, 利用地址关系,更加明确它的具体形式,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量;所 以未来函数中只是需要主调函数中的变量值来实现计算,就可以采⽤传值调⽤。如果函数内部要修改 主调函数中的变量的值,就需要传址调⽤。

  • 18
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛应用于软件开发的编程语言,具有简洁、高效、灵活等特点。为了更好地学习和掌握C语言,整理一份完整的笔记是非常有必要的。 首先,C语言的基础知识是理解和掌握该语言的关键。笔记中应包含C语言的基本语法,如变量的声明和定义、数据类型、运算符、控制语句等,这些是编写C程序的基础。 其次,C语言的函数也是非常重要的一部分。函数是C语言中的一种模块化的编程方式,可以提高代码的重用性和可维护性。在笔记中应包含函数的定义和调用、参数传递、函数返回值等内容,以及常用的C库函数的使用。 此外,C语言的数组和指针也是需要重点关注的内容。数组是一种存储多个相同类型数据的方式,而指针则是C语言中与内存地址相关的操作。在笔记中应包含数组的定义和初始化、多维数组的使用、指针的声明和运算等内容。 还有,C语言中的内存管理是需要特别注意的。动态内存分配是C语言的一个重要特性,可以根据需要在运行时分配和释放内存。笔记中应包括动态内存分配的函数,如malloc、free等,以及内存泄漏和内存溢出的问题的解决方法。 最后,C语言的文件操作也是需要掌握的一部分。文件操作是C语言中与磁盘文件进行读写的关键部分,可以实现数据的长久保存和共享。在笔记中应涵盖文件的打开和关闭、读取和写入、文件指针的操作等内容。 综上所述,C语言笔记的完整版应该包含C语言的基础知识、函数、数组和指针、内存管理以及文件操作等内容。通过阅读和整理笔记,可以更好地理解和应用C语言,提高程序编写的效率和质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值