【问题标题】:Initialize variable with pointer to that variable用指向该变量的指针初始化变量
【发布时间】:2017-02-13 02:47:09
【问题描述】:

在 C 中,以下是明确定义的吗?

void* ptr = &ptr;
void* array[1] = {array};

换句话说,你能用一个变量的地址来初始化那个变量吗?它似乎适用于 GCC 编译器,但我只想知道它是否可以依赖。

编辑:这本质上是Defining a pointer to refere to same variable name's reference?的副本

【问题讨论】:

  • 为什么你认为它可能不起作用?在我看来是合法的。就像在里面的一张纸上写了编号的盒子,里面有自己的数字……
  • 或者您担心在评估初始化程序时不具有地址的变量? span>
  • “定义良好”可能是拉伸它,但我不能明确地说它是未定义的。 void * 是特殊的,但我不知道这种特殊性是否延伸到 void **
  • 好吧。 standard (6.7.9) 对此没有任何限制。如果不禁止,则允许..

标签: c pointers initialization


【解决方案1】:

它应该是合法的。由于 ptr 不是 const,它的初始化值在 .text 代码区域中并不固定,因此在运行时应该知道它并以正确的值写入 RAM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多