有关第四次实验报告

有关第四次实验报告

看似最简单但最需要理解的部分是实验1的交换,形参和实参虽然是最基础的概念,字面意义上不难理解,前者是后者在使用方法被调用时所使用的变量。但该实验中使用的函数一律为void类型,无返回值。几类交换方式会出现形参的值互相交换但没有传指给实参的情况。真正有效的方法是定义形参为两个实参的指针(a=&x,b=&y),目的是做到形参和实参在内存地址上的一一对应。此时调用a和b即为指针的值,在此基础上调用a和b便是该地址内x值和y值,最后有效的进行两数交换。

代码如下:

#include<stdio.h>
void swap1(int, int);
void swap2(int*, int);
void swap3(int*, int*);
void swap4(int*, int*);
int main()
{
	int x = 2, y = 5, * a = &x, * b = &y;
	printf("%p,%p\n", a, b);
	printf("%d,%d\n\n", x, y);
	x = 2, y = 5;
	swap1(x, y);
	printf("after1\n");
	printf("%p,%p\n", a, b);
	printf("%d,%d\n\n", x, y);
	x = 2, y = 5;
	swap2(&x, y);
	printf("after2\n");
	printf("%p,%p\n", a, b);
	printf("%d,%d\n\n", x, y);
	x = 2, y = 5;
	swap3(&x, &y);
	printf("after3\n");
	printf("%p,%p\n", a, b);
	printf("%i,%i\n\n", x, y);
	x = 2, y = 5;
	swap4(&x, &y);
	printf("after4\n");
	printf("%p,%p\n", a, b);
	printf("%d,%d\n\n", x, y);
	return 0;
}
void swap1(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
}
void swap2(int* a, int b)
{
	int temp = *a;
	*a = b;
	b = temp;
}
void swap3(int* a, int* b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}
void swap4(int* a, int* b)
{
	int* temp = a;
	a = b;
	b = temp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值