所以我最近开始使用Linux在C语言中进行编码,而我正在使用gcc编译器。我最近开始使用Pointers。所以我写了一个简单的C程序来习惯使用指针。我编写了下面提到的代码,并使用gcc对其进行了编译,并得到了错误(“总线错误:10”),然后我尝试使用clang编译完全相同的代码,并且该代码起作用了。我猜有一些我不遵循的特定gcc规则,这就是为什么我得到此错误。我想知道为什么会发生这种情况,以及将来如何避免犯类似类型的错误。
#include <stdio.h>
int main(void)
{
int *address;
*address=10;
printf("%d\n", *address);
return 0;
}
您的指针未分配有效地址,它尚未初始化,并且可以具有任何值。取消引用它具有不确定的行为。因此,它在两个不同的编译器中具有不同的行为这一事实不足为奇。您真的不能期望程序触发未定义的行为。