nick_slade
2018-05-07 14:05
void swap(int *a, int *b)
{
int *tmp;
*tmp = *a;
*a = *b;
*b = *tmp;
}
gcc之后执行"./a.out"报错"Segmentation fault (core dumped)"
等号右边*a表示取出指针a指向的数据,这里tmp就是整数类型,所以不需要加。换言之,tmp表示整数类型,*a也表示整数类型。造成这样的疑惑是因为对于*a在不同位置理解含义不同导致的:*a处于函数参数位置时,仅表示这里函数传参需要一个指针类型的变量;当*a处于等号右边时表示取出指针a代表的实际变量值。
百度搜索了一下“野指针”,发现定义一个指针时如果没有初始化,指针就会乱指向一个没有访问权限的内存位置,就导致了上述错误。
Linux C语言指针与内存
116475 学习 · 250 问题
相似问题