C/C++中的变量是如何工作的?
我的意思是,指针存储了一个变量的地址,然后你必须取消引用它才能访问它引用的对象,所以我认为变量是一个指针,当使用它时会自动取消引用...这有什么意义吗?
发布于 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 );您不想复制整个字符串,而是给出字符串开始的地址(通过引用调用)。
发布于 2010-08-13 20:52:53
我知道你已经接受了一个答案,但这并不能直接回答你的问题...这是为了给你启迪,如果你想读的话。
发布于 2010-08-13 20:30:05
局部变量可以驻留在内存或寄存器中,也可以在程序执行的不同阶段在这两个变量之间浮动,也可以与另一个变量共享空间。编译器可以自由地为您的变量分配最有效的空间。
如果你把指针指向一个变量,那么编译器需要把这个变量放入内存,这样它就有了一个唯一的地址。但是,如果您从不将指针指向它,那么您的变量可能会保留在它自己的CPU寄存器中。或者,如果您有两个局部变量,并且从未同时使用这两个变量,则编译器可以让它们占用相同的内存或CPU寄存器。
https://stackoverflow.com/questions/3476675
复制相似问题