首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C/C++中的变量是如何工作的?

C/C++中的变量是如何工作的?
EN

Stack Overflow用户
提问于 2010-08-13 20:17:33
回答 6查看 2.4K关注 0票数 21

C/C++中的变量是如何工作的?

我的意思是,指针存储了一个变量的地址,然后你必须取消引用它才能访问它引用的对象,所以我认为变量是一个指针,当使用它时会自动取消引用...这有什么意义吗?

EN

回答 6

Stack Overflow用户

发布于 2010-08-13 20:27:42

考虑以下定义

char *string="abc";
int b = 10;
int *bptr = &b;

我稍微简化了一下,使用十进制值,变量(名称)是地址的占位符,在这些地址中存储具体的值。

Adr  content
1000 a b c 0    // "abc" : string literal '\0' terminated 
1004    1000    // *string: pointer to string (address 1000)
1008      10    // b = 10 : integer value
1012    1008    // *bptr  : pointer to &b 

例如,通过使用printf("%s\n“,string );您不想复制整个字符串,而是给出字符串开始的地址(通过引用调用)。

票数 12
EN

Stack Overflow用户

发布于 2010-08-13 20:52:53

我知道你已经接受了一个答案,但这并不能直接回答你的问题...这是为了给你启迪,如果你想读的话。

How does automatic memory allocation actually work in C++?

票数 4
EN

Stack Overflow用户

发布于 2010-08-13 20:30:05

局部变量可以驻留在内存或寄存器中,也可以在程序执行的不同阶段在这两个变量之间浮动,也可以与另一个变量共享空间。编译器可以自由地为您的变量分配最有效的空间。

如果你把指针指向一个变量,那么编译器需要把这个变量放入内存,这样它就有了一个唯一的地址。但是,如果您从不将指针指向它,那么您的变量可能会保留在它自己的CPU寄存器中。或者,如果您有两个局部变量,并且从未同时使用这两个变量,则编译器可以让它们占用相同的内存或CPU寄存器。

http://en.wikipedia.org/wiki/Register_allocation

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3476675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档