美文网首页C语言
指针交换三种

指针交换三种

作者: sakura579 | 来源:发表于2020-08-03 23:32 被阅读0次
#include <stdio.h>

void func(int *p1,int *p2);

main()
{
    int a,b;
    int *p1 = &a,*p2 = &b;
    scanf("%d%d",p1,p2);
    func(p1,p2);
    printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp; 
}

输入的 2 5
结果是 a=5 b=2

#include <stdio.h>

void func(int *p1,int *p2);

main()
{
    int a,b;
    int *p1 = &a,*p2 = &b;
    scanf("%d%d",p1,p2);
    func(p1,p2);
    printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
    int *temp = p1;
    p1 = p2;
    p2 = temp; 
}

输入的 2 5
结果是 a=2 b=5
这个是把地址交换 没有进入房子把值交换
把房子里值换掉需要有*
那就是说 除了把地址传给对方 对方还得用* 才能影响实参
这个形参传不回来
形参没有改变实参

#include <stdio.h>

void func(int *p1,int *p2);

main()
{
    int a,b;
    int *p1 = &a,*p2 = &b;
    scanf("%d%d",p1,p2);
    func(p1,p2);
    printf("a=%d,b=%d",a,b);
}

void func(int *p1,int *p2)
{
    int *temp;
    *temp = *p1;
    *p1 = *p2;
    *p2 = temp; 
}

这个编译失败
原因是temp指针变量只定义没有初始化

相关文章

网友评论

    本文标题:指针交换三种

    本文链接:https://www.haomeiwen.com/subject/qsqdrktx.html