swap函数

void swap(int* p_a, int* p_b)	//p_a、p_b是两个指针,其值就是&a、&b,且p_a、p_b指向a、b。只是出了该函数,两个形参会销亡。
{   				//该函数只是对形参p_a、p_b,即对指向a、b的指针进行了交换操作,若使用变量ab,此时二者的值没有改变。
 	int *p_tem;		//若把此时的两个形参指针[&a、&b的值]传出去,并使用,则两个实参的值会发生改变。	
	p_tem = p_a;
	p_a = p_b;
	p_b = p_tem;

	p_1 = p_a;
	p_2 = p_b;
}
int _tmain(int argc, _TCHAR* argv[])
{
	int a = 10, b = 11;
	
	swap(&a, &b);
	printf("[%d,%d], [%d,%d]", a, b, *p_1, *p_2);
}
//若要使用一个指针指向的地址,要先申请空间。
void swap(int *a, int*b)
{
	int *p_tem;	

	*p_tem = *a;//新建了一个指针(但没有分配内存)。*p_tem = *a不是指向而是拷贝。把*a所指向的内存里的值(也就是实参a的值)拷贝到*temp所指向内存里了, 但该指针只有一个随机指向,无对应的内存,报未初始化的错。
	*a = *b;
	*b = *p_tem;
}


猜你喜欢

转载自blog.csdn.net/lyl0530/article/details/80807391