C语言函数调用指针交换值

int p;
	p = *a;
	*a = *b;
	*b = p;

可以发现函数调用前后还是函数执行前后地址都没有发生改变,值做了交换
在这里插入图片描述


	int *p;
	*p = *a;
	*a = *b;
	*b = *p;

可以发现三个指针互换时,是不能交换值和地址的,只有中间*a = *b起到了作用,所以b的值给了a
在这里插入图片描述


	int *p;
	p = a;
	a = b;
	b = p;

可以发现在函数里交换了地址,值做了交换,但只在当前函数生效,
但丝毫不影响主函数的值,因此在其他函数交换指针地址是不能改变主函数的值的

在这里插入图片描述


如果我们在函数里改变了形参指针的地址,会发现即使在函数里地址发生改变,值发生改变,也并不会改变主函数的地址和值
在这里插入图片描述


除非我们把指针的值改变,主函数的值才会改变
在这里插入图片描述

因此得出结论: 只有在函数里改变了指针的值,才会影响到主函数的实参,如果只是交换地址什么的,对主函数没有任何影响

猜你喜欢

转载自blog.csdn.net/zyy130988/article/details/115447987