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

car*_*995 1 c pointers memory-address

今天出于好奇,我尝试了一些非常奇怪的东西:

代码 :

int num = 2;
int * point = #

printf("%p\n" , &point);
Run Code Online (Sandbox Code Playgroud)


问题:

1)我做的第一件事是我将变量的地址附加num到指针point,之后我printf()用来打印出指针中的地址存储point.

2)稍后,我只是尝试修改代码(Above Code)以查看它将给出的行为,即通过使用printf()打印出指针的地址point而不是打印出指针中的地址存储,point这是变量的地址num.

3)尽管地址与变量的地址不同,它仍会打印我的地址num,只是想知道这个行为是否在C标准中得到了很好的定义?为什么指针也有自己的地址因为我认为它的工作是存储其他变量地址.



感谢您花时间阅读本文.

Pro*_*ica 7

指针只是另一个变量,因此也需要一个居住的地方.


Alo*_*ave 5

|----------|                             
|   point  |                            
|          |  1000                       
|   2000   |                             
|----------|                           
      |        
      |
      |
      |
      -------------------->|----------|
                           |   num    |
                           |          |  2000
                           |    2     |     
                           |----------|
Run Code Online (Sandbox Code Playgroud)

指针point本身也是一个变量,它需要内存中的一些空间来驻留.如上所示,它指向/存储存储器num(2000)存储在存储器中的存储器位置,但是为了point存在它本身需要一个单独的存储器位置(1000).