2014-11-14 36 views
-2

通常,当我们声明一个变量与数据类型,即,理解在C语言的基本变量声明

int temp; 

温度将被获分配在堆4个字节。每当我们使用temp时,就意味着我们正在指向为temp创建的内存。 我们可以把temp当成指针吗?因为当我们使用temp时,这意味着我们正在间接访问内存中的4个字节。

+0

如果它是一个全局变量(在函数之外声明),则BTW'temp'不在堆栈中。 – 2014-11-14 14:32:30

回答

1

temp将被分配4个字节的堆栈。

temp将被分配的地方取决于你声明它的地方,还取决于编译器。它将分配在.data或.bss段中,以防您在文件范围或静态声明它。如果您在本地声明它,它将被分配在堆栈或CPU寄存器中。如果编译器想要这样做,它也可以完全被优化。

只要我们使用温度,这意味着我们都指向对于临时创建的

种类的内存,但只是间接的。生成程序机器码的编译器知道变量的分配位置,并在机器代码中使用该地址。

我们可以把temp当成指针吗?

不,它是一个变量,是为存储数据而分配的一大块数据。

另一方面,指针是为存储地址而分配的一块数据。

+0

哦,好的。所以当它转换成汇编语言时,它会从为temp创建的内存中提取数据。我对吗? – 2014-11-14 14:58:27

+0

@SREEBALATHATAVARTHI是的,因为所有变量都必须存储在某个地方。他们不能在稀薄的空气中分配。 – Lundin 2014-11-14 15:01:14

+0

好的谢谢.. :)我得到了我的答案。 – 2014-11-14 15:02:50

3

不,在int temp;的情况下,如果我们要求temp,我们所指的是变量temp所持有的值。

如果我们在说&temp,那么我们指的是变量temp的地址。

你可以在c中阅读关于data types的一些基本知识。

BTW &是“地址”运营商。只想到提及

+0

是否还有'temp'变量以及相应的4个字节?即,在堆栈中,临时存在于某个地址中,并在该地址下面分配了4个字节。 – 2014-11-14 14:32:32

+0

'temp'是具有4个字节的内存的变量名,存在于堆栈中[考虑局部变量]。在这里没有'...'部分...... :-) – 2014-11-14 14:35:19

+0

'temp'的地址由'&temp'返回。请尽快推荐一本好的C书,并清楚地说明conecpts。 – 2014-11-14 14:37:39