gpt4 book ai didi

c - 变量名如何存储在 C 中?

转载 作者:太空狗 更新时间:2023-10-29 16:42:39 25 4
gpt4 key购买 nike

我想问一下C中的变量是如何存储在C中的?

为了更清楚地考虑以下代码:

int main() {
int a = 1, b;
b = a + 2;
return 0;
}

例如这里在什么内存中 C 存储了变量位置的名称。

例如,如果&a=0x12A7(假设)&b=0x123B1,那么 是如何以及在哪里发生的?存储变量名称,例如 a 存储在哪个内存中?

最佳答案

变量名根本不需要存储!编译器可以完全摆脱它们。想象一下,如果编译器非常聪明,它可以将您的整个程序简化为:

int main(){
return 0;
}

注意这个程序的效果和你原来的一模一样,现在完全没有变量了!现在不需要说出他们的名字,是吗?

即使实际使用了代码中的变量,它们的名称也纯粹是您编写程序时方便的表示法,但处理器在执行您的代码时不需要它们。就微处理器而言,像这样的函数:

int foo(int x, int y) {
int z = x + y;
return z * 2;
}

在某些假设的简单指令集架构 (ISA) 中,可能会产生执行此操作的编译代码:

ADD # consumes top two values on stack (x and y), pushes result (z)
PUSH 2 # pushes 2 on stack
MULT # consumes top two values on stack (z and 2), pushes result
RET

长话短说,有时存储变量名是为了调试目的。例如,如果您使用的是 GCC,则可以传递 -g 选项来发出一个“符号表”,其中包含用于调试的变量名称之类的内容。但它不仅仅是运行程序所必需的,而且它不在语言标准中——它是一种因平台而异的实现功能。

关于c - 变量名如何存储在 C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34382260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com