我正在进行在线C语言测试(不是为了工作,仅仅是为了我自己)并且我继续使用哈希符号运行这种类型的问题。我假设它不是拼写错误,我不熟悉哈希符号的使用。
#include <stdio.h>
int* func()
{
int num = 10;
return #
}
int main()
{
int *ptr = func();
printf("%d\n", *ptr);
return 0;
}
上面C代码的输出是什么?
答案是它是一个运行时错误,解释是
函数中定义的变量将在堆栈段中分配,该函数将在函数返回时删除。因此,访问这些变量的地址会导致分段错误。
创建测试的人没有正确编码他们的HTML。他们希望这条线看起来像是:
return #
他们将其直接放入测试页面的HTML中,忘记了&XXX;
是如何输入HTML实体的。 #
是#
角色的实体。他们应该写:
return &num;
&
是&
角色的实体。
函数func()返回指向变量num的指针。但num是函数func()中的一个自动变量。它存储在堆栈中,其生命周期只是函数本身的生命周期。因此,如果您尝试在main()中访问该指针,则它将是分段错误,因为cz num不再存在,因此指针并不真正指向任何东西。
编辑:
哈希 - #用于定义宏和头文件。返回# - >这似乎是问题中的拼写错误。因此,只有错误是由指针引起的分段错误。