写了一个简单的交换程序,效果很好;但给出了一个分段故障打印完所有内容后。
#include <stdio.h>
void swap(int* p1,int* p2){
int* temp;
*temp = *p1;
*p1 = *p2;
*p2 = *temp;
}
int main(){
int a,b;
a = 9; b = 8;
printf("%d %d \n",a,b);
swap(&a,&b);
printf("%d %d \n",a,b);
return 0;
}
输出:
9 8
8 9
Segmentation fault
我应该忽略这一点并继续前进还是真的发生了一些奇怪的事情?
int* temp;
*temp = *p1;
is 未定义的行为在 C 和 C++ 中,因为您使用的是未初始化的指针。 (在使用时,指针必须始终指向您拥有的内存,而您的指针则不是)。
Use int temp; temp = *p1;
相反,或者更好的是,int temp = *p1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)