首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在mac上执行C代码(最初在DevC++中执行)

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

Stack Overflow用户
提问于 2019-01-15 19:19:58
回答 2查看 61关注 0票数 0

我在实验室的系统(使用Windows)上用C语言解决了这个简单的问题。我用DevC++写了这段代码,它在DevC++上运行,但我不能在我的Mac系统上编译相同的代码。

代码:

代码语言:javascript
复制
#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)上运行时收到以下错误消息。

代码语言:javascript
复制
Bus error: 10
EN

回答 2

Stack Overflow用户

发布于 2019-01-15 19:27:14

您的代码中有一个错误。

代码语言:javascript
复制
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一个值,也就是让它指向某个东西。

票数 0
EN

Stack Overflow用户

发布于 2019-01-15 19:28:45

swap-function没有多大意义,因为您只在函数内交换参数,但是结果使用交换运算符+将这两个值组合在一起(所以为什么要交换呢?)

并将一个值赋给一个没有指向有效对象的指针:int *k; *k=x+y;。但不管怎样,完整的操作对我来说没有任何意义。

也许你想要这样的东西:

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54197834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档