注册 登录
编程论坛 C语言论坛

利用指针交换两个变量的值

LGD335060087 发布于 2020-03-16 18:06, 1767 次点击
#include"stdio.h"            //输入两个整数a中存放两者最小值b中存放两者最大值并且输出a,b值 (利用指针)
int main(){
    int a,b;
    int *p1=&a,*p2=&b;

    scanf("a=%d,b=%d",p1,p2);
    int i;
    if(*p1>*p2){
        i=*p1;
        *p1=*p2;
        *p2=i;
    }
    printf("a=%d,b=%d",*p1,*p2);
    return 0;
}
为什么输出中a永远等于=0;
6 回复
#2
forever742020-03-16 19:18
运行时你输入数据的格式不对。
#3
return_02020-03-16 19:22
要用指针格式输入
#4
叶纤2020-03-16 20:03
程序代码:
我对c语言的输入输出实在不熟我也出现和你一样的问题,我用c++翻译一下就可以了

#include<iostream>
using namespace std;
int main()
{  int a{};int b{}; int *p1=&a;int *p2=&b;

 cin>>*p1>>*p2;//如果你想输入十进制加个解引符号就行了,表示初始化ab
int i;
    if(*p1>*p2){
        i=*p1;
        *p1=*p2;
        *p2=i;
    }

 cout<<*p1<<"  "<<*p2;
}
7 4
4  7
#5
叶纤2020-03-17 00:58
程序代码:

#include<stdio.h>          //想了一大会终于找到为什么了,第一scanf输入的时候不要加a=什么的,最好中间不要用逗号,每次我用控制台的时候逗号总是中文的,
int main(){
    int a,b;
    int *p1=&a,*p2=&b;

    scanf("%d%d",&*p1,&*p2);//第二p1p2本来就是int*型的的指针,里面是ab的地址,曾经forever贵宾大大说c里都是传值的,必须显示传址,所以解引用的同时,再传址
    int i;
    if(*p1>*p2){
        i=*p1;
        *p1=*p2;
        *p2=i;
    }
    printf("a=%d,b=%d",*p1,*p2);
    return 0;
}


4 2输入的时候中间加空格
a=2,b=4
#6
吹水佬2020-03-17 09:11
只有本站会员才能查看附件,请 登录
#7
return_02020-03-17 09:13
1