为什么这个交换程序不能在 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;
}
我是 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;
}