我在实验室系统(使用 Windows)上用 C 语言解决了这个简单的问题。我使用 DevC++ 编写了这段代码,它在 DevC++ 上运行,但我无法在我的 Mac 系统上编译相同的代码。
代码:
#include<stdio.h>
#include<stdlib.h>
int* oddSwap(int x, int y)
{
int temp = x;
x = y * 5;
y = temp * 5;
int *k;
*k=x+y;
return k;
}
int main()
{
int x=5;
int y=3;
int *k=oddSwap(x,y);
printf("\n%d", *k);
return 0;
}
它在 Windows (DevC++) 上运行,但在 macOS (macOS 10.14.2) 上运行时收到此错误消息。
Bus error: 10
最佳答案
swap
函数没有多大意义,因为您仅在函数内交换参数,但结果随后使用交换运算符 +
组合两个值(因此为什么要交换?)。
并且您将一个值分配给一个不指向有效对象的指针:int *k; *k=x+y;
。但无论如何,完整的操作对我来说没有意义。
也许您想要类似的东西:
void oddSwap(int *x, int *y) {
int temp = *x;
*x = *y * 5;
*y = temp * 5;
}
int main()
{
int x=5;
int y=3;
oddSwap(&x,&y);
printf("\n%d:%d", x,y);
return 0;
}
关于无法在mac上执行C代码(最初在DevC++中执行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54197834/