谁可以给我解释一下这个
main()
{
int *x,y;
*x = 1;
y = *x;
printf("%d",y);
}
Run Code Online (Sandbox Code Playgroud)
当我在gcc中编译它时如何在main函数中运行它是正常的,而在不同的函数中运行它不会像下面的函数一样工作?
test()
{
int *x,y;
*x = 1;
y = *x;
printf("%d",y);
}
Run Code Online (Sandbox Code Playgroud)
Arm*_*yan 12
int *x,y;
*x = 1;
Run Code Online (Sandbox Code Playgroud)
未定义的行为.x没有任何意义.
这是正确的:
int *x, y, z;
x = &z;
*x = 1;
y = *x;
Run Code Online (Sandbox Code Playgroud)
要么
int *x, y;
x = malloc(sizeof(int));
*x = 1;
y = *x;
//print
free(x);
Run Code Online (Sandbox Code Playgroud)
未定义的行为是未定义的.你不知道它会如何表现.它似乎工作,崩溃,打印不可预测的结果和其他任何东西.或者它可以在不同的运行中表现不同.不要依赖未定义的行为