【发布时间】:2018-02-07 13:23:28
【问题描述】:
为什么会输出“Segmentation fault(core dumped)”
当我运行以下代码时,它显示段错误(核心转储)
#include <stdio.h>
void swap(int *, int *);
int main() {
int x = 5, y = 10;
swap(x, y);
printf("%i\n %i\n", x, y);
}
void swap(int *a, int *b) {
int s;
s = *a;
*a = *b;
*b = s;
}
【问题讨论】:
-
致电
swap()- 在main()- 不正确。应该是swap(&x, &y) -
您应该在此行收到编译器警告:
swap(x,y);。使用-Wall编译。顺便说一句,swap(3,4);会做什么?并且在格式化你的代码方面也付出了一些努力。 -
您正在传递变量
x和y的值,不是它们的地址。 -
请正确缩进您的代码。机器(编译器)可以读取和编译任何东西,但是对于人类来说,它需要在将文本块读取为 code 时做出一点sense。提问时,文本区域右侧有一个橙色的大如何格式化框。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。还有一个预览区域,显示您的帖子发布后的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
-
问题是您使用的是垃圾编译器。如果没有来自编译器的警告/错误,则不允许编译此代码。
标签: c pointers segmentation-fault swap