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

求大佬帮忙看一下

he1527385048 发布于 2020-05-27 20:51, 1381 次点击
#include<stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
    char* temp;
    temp= *a;
    *a= *b;
    *b=tem
}
int main()
{
    char a[20],b[20],c[20];
    printf("请输入三个字符串:\n");
    scanf("%s%s%s",a,b,c);
    char *p1=a,*p2=b,*p3=c;
    if(strcmp(p1,p2)>0) swap(p1,p2);
    if(strcmp(p1,p3)>0) swap(p1,p3);
    if(strcmp(p2,p3)>0) swap(p2,p3);
    printf("%s\n%s\n%s\n",p1,p2,p3) ;
    return 0;
}
各位大佬可以帮我看一下为什么不对吗,小白一个,如果有时间的话可以给我讲讲这个指针的地址啥的不
1 回复
#2
fulltimelink2020-05-27 21:56
函数 指针参数也是传值, 所以可以修改指向的值
程序代码:

#include<stdio.h>
#include <string.h>
void swap(char *a,char *b)
{
    char temp[20];
    strcpy(temp, a);
    strcpy(a, b);
    strcpy(b, temp);
}
int main()
{
    char a[20],b[20],c[20];
    printf("请输入三个字符串:\n");
    scanf("%s%s%s",a,b,c);
    char *p1=a,*p2=b,*p3=c;
    if(strcmp(p1,p2)>0) swap(p1,p2);
    if(strcmp(p1,p3)>0) swap(p1,p3);
    if(strcmp(p2,p3)>0) swap(p2,p3);
    printf("%s\n%s\n%s\n",p1,p2,p3) ;
    return 0;
}


[此贴子已经被作者于2020-5-27 21:57编辑过]

1