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

Why isn't this swap program working in C?

我是 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);
}

提前致谢。

int *temp = *p1; 不会编译(这是 约束违规 并且必须导致编译器诊断):您正在分配一个 int (除了0) 指向指针类型。这是不允许的。

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

void是子进程,必须用大括号括起来,不能以分号结尾。 另一方面,正如社区所说 int * temp = * p1; 是违反约束的,它必须是 int temp = * p1;

也没有交换值,它只显示输入时的值。

最后,主要return一个int,你必须指定你return一个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;
}