sha*_*z17 -1 c segmentation-fault
为什么此代码显示分段错误(核心已转储)?
#include<stdio.h>
void swap(int*,int*);
int main(){
int x=5,y=10;
swap(&x,&y);
printf("%d%d",x,y);
return 1;
}
void swap(int *a,int *b){
int *temp;
*temp = *a;
*a = *b;
*b = *temp;
}
Run Code Online (Sandbox Code Playgroud)
int *temp;是问题。它并不指向您拥有的任何内存。取消引用的行为temp是不确定的。
请int temp;改用(最好是int temp = *a;此后temp从不处于未初始化状态)temp而不是*temp在分配中使用。
(顺便说一句,0按惯例,返回值main表示成功。)