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;
}