为什么这个交换程序不能在C中运行?

时间:2017-12-05 10:44:57

标签: c swap

我是C的新手,我正在尝试创建一个基本的交换程序,有人可以解释为什么下面的代码不起作用。

#include <stdio.h>

void swap (int *p1, int *p2);
    int *temp = *p1;
    *p1 = *p2;
    *p2 = temp;

int main ()
{
    int x = 10;
    int y = 20;
    int *p1 = &x, *p2 = &y;
    swap (p1, p2);

    printf ("x: %d, y: %d\n", x, y);
}

提前致谢。

2 个答案:

答案 0 :(得分:2)

int *temp = *p1;将无法编译(这是约束违规并且必须导致编译器诊断):您正在为指针分配int(除0之外)类型。那是不允许的。

int temp = *p1;,修复swap函数中明显的拼写错误 - 给它一个正文! - 一切都会好的。

答案 1 :(得分:0)

void是一个子进程,它必须用大括号括起来,不能以分号结尾。 另一方面,由于社群称int * temp = * p1;是违规行为,因此必须int temp = * p1;

也没有交换价值,它只表现在他们进入时。

最后,主要返回int,您必须指定返回0,即return 0;

整个计划就像那样

#include <stdio.h>

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

int main ()
{
    int x = 10;
    int y = 20;
    swap (p1, p2);

    printf ("x: %d, y: %d\n", x, y);
    return 0;
}