指针的值做形参在被调函数中做修改,在调用函数中的值不会被改变;

#include<stdio.h>
void swap(int* xptr, int* yptr) {
	int* t;
	printf("%d %d", xptr, yptr);
	t = xptr;
	xptr = yptr;
	yptr = t;
	printf("%d %d\n", *xptr, *yptr);//输出5 3;
	printf("%d %d", xptr, yptr);//输出值与第4行相反;
}
int main() {
	int a = 3, b = 5;
	int* xptr = &a, * yptr = &b;
	printf("%d %d", xptr, yptr);
	printf("\n");
	swap(xptr, yptr);
	//printf("%d %d\n", *xptr, *yptr);//输出3 5;
	//printf("%d %d", xptr, yptr);//输出值与第12行相同;
	//swap(&a, &b);
	//printf("%d %d", *&a, *&b);//输出3 5;
	return 0;
}
//指针的值做形参在被调函数里被改变,调用结束后依然像其他类型的数据一样被释放,其在主调函数里的值不会改变;


版权声明:本文为qq_61175343原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。