[英]Memory address of a memory address in a machine? (C language)
今天出于好奇,我尝试了一些很奇怪的方法:
编码 :
int num = 2;
int * point = #
printf("%p\n" , &point);
问题:
1)我要做的第一件事是将变量num
的地址附加到指针point
,然后使用printf()
打印出指针point
的地址存储。
2)以后,我只是尝试修改代码(上面的代码)以查看它将给出什么行为,即使用printf()
打印出指针point
的地址,而不是打印出指针point
的地址存储是变量num
的地址。
3)虽然地址与变量num
的地址不同,但仍然会打印我的地址,只是想知道在C标准中是否很好地定义了此行为?为什么指针也有自己的地址,因为我认为它的工作是是存储其他变量地址。
指针只是另一个变量,因此也需要一个居住的地方。
|----------|
| point |
| | 1000
| 2000 |
|----------|
|
|
|
|
-------------------->|----------|
| num |
| | 2000
| 2 |
|----------|
指针point
本身也是一个变量,它需要在内存中保留一些空间。 如上所示,它指向/存储将num
存储在内存中的存储位置( 2000
),但是point
存在,它本身需要一个单独的存储位置( 1000
)。
您计算机中的所有内容都是一和零。 就像int变量在特定的存储位置只是一和零一样,指针也正是如此。 区别在于您的程序如何决定威胁该存储单元的内容。 如果声明了指针,它将使用存储单元存储某些数据的地址,但是存储该数据的存储单元也必须具有一个地址,就像其他所有地址一样。
这与C语言无关,而与计算机的工作原理有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.