夜晚的月亮 发表于 2018-11-29 11:37:22

为什么这个程序运行不了啊

#include <stdio.h>
int a=1,b=2,c=3,*p1,*p2,*p3,*t;
void swap(int *q1,int *q2);
void main()
{
        p1 = &a;
        p2 = &b;
        p3 = &c;
        swap(*p1,*p2);
        swap(*p1,*p3);
        swap(*p2,*p3);
        printf("%d %d %d",a,b,c);
}

void swap(int *q1,int *q2)
{
        if(*q1<*q2)
        {
                int temp;
                temp = *q1;
                *q1 = *q2;
                *q2 = temp;
        }
}

TOP_LK 发表于 2018-11-29 11:52:18

报什么错

rencaixiaomeng 发表于 2018-11-29 11:54:38

swap函数两个参数都是int *类型,*p1 *p2 *p3这些是int类型,把int变量传给int *参数当然会出错
把调用函数里p1 p2 p3前面的*去掉就可以了
#include <stdio.h>
int a=1,b=2,c=3,*p1,*p2,*p3,*t;
void swap(int *q1,int *q2);
void main()
{
      p1 = &a;
      p2 = &b;
      p3 = &c;
      swap(p1,p2);
      swap(p1,p3);
      swap(p2,p3);
      printf("%d %d %d",a,b,c);
}

void swap(int *q1,int *q2)
{
      if(*q1<*q2)
      {
                int temp;
                temp = *q1;
                *q1 = *q2;
                *q2 = temp;
      }
}

lemon3 发表于 2018-11-29 15:16:37

楼上说的对,主函数里面调用的swap函数里面传入的是参数,所以在主函数里面传入参数就是行了,不是地址对应的值,直接传入值就行了。
页: [1]
查看完整版本: 为什么这个程序运行不了啊