【发布时间】:2015-01-13 14:08:22
【问题描述】:
#include <stdio.h>
void swap (int *a, int *b)
{
int *tmp;
*tmp = *a;
*a = *b;
*b = *tmp;
}
int main ()
{
int x = 5;
int y = 7;
swap (&x,&y);
printf ("\n x = %d \n y = %d \n",x,y);
}
我正在使用代码块,但这段代码不起作用,我不明白为什么......在一台计算机上它运行良好,但在另一台计算机上它根本无法运行。 有什么帮助吗? 提前致谢。
【问题讨论】:
-
*tmp = *a;你没有收到警告吗? -
它没有坏,这可能是什么原因?也许硬盘上的坏扇区?感谢您的回答。
-
不,我是在讽刺,你的程序因为 Gopi 暴露的原因而无法工作,你正在取消引用一个无效的指针,这是未定义的行为,这恰恰意味着它行为不会一致,因此例如跨计算机的行为是不同的。
-
我认为 Gopi aleady 已经充分回答了您的问题,但可以节省时间的一件事就是将
tmp设为整数,而不是指针。你所要做的就是删除一些*的