6

我可以知道volatile变量在内存中的存储位置吗?

  1. 如果我全局声明意味着它存储在内存中的什么位置?

    volatile int a =10;
    int main()
    {
        printf("Global A value=%d",a);
        return 0;
    }
    
  2. 如果我在函数内本地声明意味着它存储在内存中的什么位置?

    int main()
    {
        volatile int a =10;
        printf("Local A value=%d",a);
        return 0;
    }
    

它是否存储在堆栈/RAM/数据段中?

请澄清我的疑问。

4

2 回答 2

13

volatile只是告诉编译器它不能在寄存器中缓存变量的值——它不会改变它被分配的位置。

于 2013-07-27T17:16:13.947 回答
11

向变量声明添加volatile限定符不会更改其存储类。

在您的第一个示例中,变量具有静态存储,而在第二个示例中,它具有自动存储;即使您删除volatile限定符也是如此。

于 2013-07-27T17:16:30.170 回答