在C中使用#符号

问题描述 投票:4回答:2

我正在进行在线C语言测试(不是为了工作,仅仅是为了我自己)并且我继续使用哈希符号运行这种类型的问题。我假设它不是拼写错误,我不熟悉哈希符号的使用。

#include <stdio.h>
int* func()
{
    int num = 10;
    return #
}
int main()
{
    int *ptr = func();
    printf("%d\n", *ptr);
    return 0;
}

上面C代码的输出是什么?

答案是它是一个运行时错误,解释是

函数中定义的变量将在堆栈段中分配,该函数将在函数返回时删除。因此,访问这些变量的地址会导致分段错误。

c
2个回答
23
投票

创建测试的人没有正确编码他们的HTML。他们希望这条线看起来像是:

return &num;

他们将其直接放入测试页面的HTML中,忘记了&XXX;是如何输入HTML实体的。 &num;#角色的实体。他们应该写:

return &amp;num;

&amp;&角色的实体。


0
投票

函数func()返回指向变量num的指针。但num是函数func()中的一个自动变量。它存储在堆栈中,其生命周期只是函数本身的生命周期。因此,如果您尝试在main()中访问该指针,则它将是分段错误,因为cz num不再存在,因此指针并不真正指向任何东西。

编辑:

哈希 - #用于定义宏和头文件。返回# - >这似乎是问题中的拼写错误。因此,只有错误是由指针引起的分段错误。

© www.soinside.com 2019 - 2024. All rights reserved.