无法在Mac上执行C代码(最初在DevC ++中执行)

时间:2019-01-15 11:19:58

标签: c macos gcc dev-c++

我在实验室系统(使用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

2 个答案:

答案 0 :(得分:0)

您的代码有错误。

int* oddSwap(int x, int y)
{
    int temp = x;
    x = y * 5;
    y = temp * 5;
    int *k; // <-- the pointer 'k' is never given a value, yet you de-reference it below.
    *k=x+y; // <-- this operation is invalid.
    return k;
}

执行*k = <something>后,您将取消引用指针。

也就是说,您将<something>分配给k指向的变量。

要使其有效,您需要给k一个值,即使其指向某物。

答案 1 :(得分:0)

"plugins": [ [ "module-resolver", { "extensions": [ ".js", ".jsx", ".ts", ".tsx" ], "root": [ "./src" ] } ] ] 函数没有多大意义,因为您仅在函数内交换参数,但是结果随后将两个值与可交换运算符swap组合在一起(那么为什么要全部交换?)

然后将一个值分配给一个指针,该指针不指向有效对象:+。但是无论如何,完整的操作对我来说毫无意义。

也许您想要这样的东西:

int *k; *k=x+y;