在C中,全局变量存储在数据段中。但是我不知道全局静态变量会存储在哪里?静态存储在内存中的全局变量在哪里?
static int num; //where will this variable get stored in memory?
int main(){
//code
}
在C中,全局变量存储在数据段中。但是我不知道全局静态变量会存储在哪里?静态存储在内存中的全局变量在哪里?
static int num; //where will this variable get stored in memory?
int main(){
//code
}
这些变量可能存储在不同的地方,标准没有强制任何特定的存储位置。根据具体情况,它们甚至可以存储在只读存储器中(如果没有修改)或者根本不存在(如果不使用)。甚至不需要该位置需要固定(或单个)。
标准对存储的唯一要求是变量必须在函数调用中保持其值。
然而,一个正常的方法是将它们与全局变量放在一起。唯一不同于静态变量的变量是符号的范围。但请注意,这只是一种可能性,我可以想象其他合理的解决方案。
要得到更准确的答案,您需要知道您使用的平台和工具链。
“标准没有要求任何特定的存储位置”+1指出他所问的问题实际上不是C的主题,所以他要么提出一个他不想问的问题,要么表达错误。无论哪种方式,你只是回答了我所做的其他事情。 – dhein
它们存储在内存的数据段中。
可能被优化,或存储在一个非'静态'版本将在同一个地方。细节取决于实现 –
它们存储在某个地方的内存中。大概。或者,如果编译器设置为优化未使用的变量,就像在这种情况下不使用'num',或者该值永远不会改变,并且它可以作为常量内联一样。为什么这是一个问题? – tadman