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

书上这么写的,为什么编译器上面报错

暴君Dentiny 发布于 2019-08-17 22:54, 2445 次点击
程序代码:
void exchange(int *q1,int *q2,int *q3)
{
    void swap(int *pt1,int *pt2);
    if(*q1<*q2) swap(*q1,*q2);
    if(*q1<*q3) swap(*q1,*q3);
    if(*q2<*q1) swap(*q2,*q1);
}
  void swap(int *pt1,int *pt2)
{
       int temp;
        temp=*pt1;
        *pt1=*pt2;
        *pt2=temp;   
}
以上为书上的代码,下面的我稍作改动就报错了
int mau(int* q1, int* q2, int* q3)
{
    void str(int* ss, int* sss);
    if (*q1 < *q2) str(*q1, *q2);
    if (*q1 < *q3) str(*q1, *q3);
    if (*q2 < *q1) str(*q2, *q1);

}
void str(int *ss,int *sss)
{
    int* qs;
    *qs = *ss;
    *ss = *sss;
    *sss = *qs;
}

严重性    代码    说明    项目    文件    行    禁止显示状态
警告    C4047     “函数”:“int *”与“int”的间接级别不同    指针考题    E:\users\c\指针考题\源.c    34   



[此贴子已经被作者于2019-8-17 23:02编辑过]

6 回复
#2
zbjzbj2019-08-17 23:31
int mau(int* q1, int* q2, int* q3)
{
    void str(int* , int*);
    if (*q1 < *q2) str(q1, q2);
    if (*q1 < *q3) str(q1, q3);
    if (*q2 < *q1) str(q2, q1);

}
#3
暴君Dentiny2019-08-18 12:57
回复 2楼 zbjzbj
和书上不一样啊,谭浩强的,不可能会错啊
#4
zbjzbj2019-08-18 14:13
回复 3楼 暴君Dentiny
谭浩强与本论坛不是一个学派的。
#5
TysonKoothra2019-08-18 19:02
你说的抄的书上的代码可能抄错了。改成注释之后的才对。
程序代码:

void exchange(int *q1,int *q2,int *q3)
{
    void swap(int *pt1,int *pt2);
    if(*q1<*q2) swap(*q1,*q2); // swap(q1, q2);
    if(*q1<*q3) swap(*q1,*q3); // swap(q1, q3);
    if(*q2<*q3) swap(*q2,*q3); // swap(q2, q3);
}


[此贴子已经被作者于2019-8-18 19:21编辑过]

#6
rjsp2019-08-19 08:30
另外,
    int* qs;
    *qs = *ss;
也是错误的
#7
nosnoy2019-08-19 12:59
同学,谭浩强的书出来多久了,要用辩证的思维看问题,没有什么东西一定是对的,更何况计算机这东西发展的多么迅猛
1