对输入的两个整数按大小顺序输出

本文介绍了如何使用指针变量作为函数参数进行值交换。通过示例代码展示了如何正确实现交换两个整数的值,强调了指针在函数调用中传递的是地址而非值。同时,提醒读者避免对未初始化的指针进行操作,以防止潜在的内存错误。最后,总结了指针参数不能改变指针本身,但能改变其所指变量的值。
摘要由CSDN通过智能技术生成

指针变量作为函数参数

        函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。

代码示例如下:

#include<stdio.h>
int main()
{
	int change(int *a,int *b);
	int *p1,*p2;
	int x,y;
	printf("Please enter two integers:\n");
	scanf("%d,%d",&x,&y);
	p1 = &x;
	p2 = &y;
	if(x<y)
		change(p1,p2);
	printf("max=%d,min=%d\n",x,y);
	return 0;
}
int change(int *a,int *b)
{
	int t;
	t = *a;
	*a = *b;
	*b = t;
}

说明:

   在函数调用时,将实参变量的值传送给形参变量,采取的依然是值传递的方式,因此 a 的值为 &x,b 的值为 &y。这时,p1 和a 都指向变量 x,p2 和 b 都指向变量 y,执行 change函数体后,*a 和 *b 的值互换,相当于 x 与 y 的值互换。函数调用结束后,形参 a 和 b 不复存在 (被释放),此时,x 与 y 已经是交换后的值。

注意:

如果 change 函数体写成以下这样就有问题了:

int swap(int *a,int *b)		
{	int *t;
	*t = *a;					
	*a = *b;
	*b = *t;
}

       *a就是 x, 是整型变量。而 *t 是指针变量 t 所指向的变量。但由于未给 t 赋值,因此,t中的值是不可预见的,所以 t 所指向的单元也是不可预见的。所以,对 *t 赋值就是向一个未知的存储单元赋值,而这个存储单元可能存在着一个有用的数据,这样就可能破坏系统的正常工作状况。

运行结果示例:

Please enter two integers:
100,200
max=200,min=100

注意:

        不能企图通过改变指针形参的值而使指针实参的值改变。C语言中实参变量和形参变量之间的数据传递是单向的值传递方式。指针变量做函数参数同样要遵循这一规则。

总结:

  不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所指变量的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我想睡觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值