考虑以下 C 语言中的 2 段代码:- 第一个代码:-
int main()
{
int *a,*b;
*a=1;
}
第二个代码:-
int main()
{
int *a,*b;
*a=1;
*b=1;
}
两者都编译没有错误。但第一个运行,第二个不运行。谁能解释一下吗?
最佳答案
它们都表现出未定义的行为:第一个运行的原因是默认情况下恰好位于 a
中的指针指向内存中的一个区域,写入该区域不会碰巧导致崩溃(这仍然是非法的)。您需要初始化指针来解决此问题:
int *a = malloc(sizeof(int));
int *b = malloc(sizeof(int));
*a = 1;
*b = 1;
free(a);
free(b);
关于c - C程序中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167858/