我尝试尝试交换两个变量中的值时出现分段错误。我代码是:C中的分段错误尝试使用指针交换两个值
我收到以下错误:
Before 1,0
After 0,1
Segmentation fault (core dumped)
什么看起来神秘对我来说,价值已成功交换后,正在产生的误差。什么是错误?我需要在任何地方指定指针吗?
我尝试尝试交换两个变量中的值时出现分段错误。我代码是:C中的分段错误尝试使用指针交换两个值
我收到以下错误:
Before 1,0
After 0,1
Segmentation fault (core dumped)
什么看起来神秘对我来说,价值已成功交换后,正在产生的误差。什么是错误?我需要在任何地方指定指针吗?
你的指针int *temp;
点没有。
因此,当您的程序确实*temp=*a;
时,它会将a
的值放入随机存储器块中。
试试这个修复:
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
更新:
其他问题:
假设我想使用温度为指针变量,而不是作为一个普通 变量,有什么办法让我的程序执行或我需要 离开我的固执?
答:你可以试试这个:
void swap(int *a,int *b){
int *temp;
temp = malloc(sizeof(int));
if (temp == NULL)
return;
*temp=*a;
*a=*b;
*b=*temp;
free(temp);
}
你swap
功能是错误的。它应该是
void swap(int *a,int *b){
int temp = *a;
*a= *b;
*b= temp;
}
使用此交换功能: -
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
这一行:INT *温度;是一个指针,指向啦啦地。那么代码执行:* temp = * a;结果是某些价值已经在'某个'未知的地点加入了记忆。 (可能在你程序的地址范围内,后来内存损坏导致seg错误,用3个xor语句执行交换更好,没有临时变量,只有3条指令,并且不会担心内存损坏 – user3629249 2014-10-01 22:25:57