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