带指针的C函数在一台计算机上工作,而在另一台计算机上不起作用

Ale*_*gić 0 c swap pointers function

#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);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用代码块,而且这段代码不起作用,我不明白为什么......在一台计算机上它运行得很好但在另一台计算机上它根本不会运行.有帮助吗?提前致谢.

Gop*_*opi 7

int tmp;
tmp = *a;
*a = *b;
*b = tmp;
Run Code Online (Sandbox Code Playgroud)

你需要的是一个tmp存储值而不是指针的变量*tmp.

下面的代码实际上是一个很糟糕的方式,但是

int *tmp = malloc(sizeof(int));

    *tmp = *a;
    *a = *b;
    *b = *tmp; 
Run Code Online (Sandbox Code Playgroud)

完成后请使用释放内存

free(tmp);
Run Code Online (Sandbox Code Playgroud)