This question already has answers here:
Crash or “segmentation fault” when data is copied/scanned/read to an uninitialized pointer
                                
                                    (5个答案)
                                
                        
                                去年关闭。
            
                    
我在实验室系统(使用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;
}

关于c - 在Mac上无法执行C代码(最初在DevC++中执行),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54197834/

10-11 02:22