我是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);
}
提前致谢。
答案 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;
}