繁体   English   中英

机器中的内存地址的内存地址? (C语言)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM