指针变量作为函数参数 为啥没交换

 

交换指针是不行的,要交换指针指向的内容

因为指针本身是值参,函数调用时和普通类型变量一样,其实函数都会复制一份临时变量来使用,已经不是传入的指针本身所存储的位置了

交换时前面加*,否则数值没变

#include <stdio.h>

void swap(int *p1, int *p2)
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 =tmp;
}
int main(void){

    int i = 3, j = 5;

    swap(&i,&j);

    printf("%d %d\n",i,j);

    return 0;
}

#include <stdio.h>

void swap(int *p1, int *p2)
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 =tmp;
}
int main(void){

    int i = 3, j = 5;

    swap(&i,&j);

    printf("%d %d\n",i,j);

    return 0;
}