用这3种格式符输出一个整形变量的地址值.把图中x改为等于12

问题描述:

用这3种格式符输出一个整形变量的地址值.把图中x改为等于12

在Turbo C下,该程序的结果为:
                                                    %p:FFD8
                                                    %x:ffd8
                                                    %X:FFD8
在Visual C++下,结果为:
                                                    %p:0012FF7C
                                                    %x:12ff7c
                                                    %X:12FF7C
 
我就是不理解什么是整型变量的地址值,定义x=12 跟输出16进制的FFD8什么关系?怎么算出来的?只是一道初期的演示例题,反正前面没看到整型变量地址值这个概念~自学C语言真心压力山大~  或者说明是哪部分概念~
1个回答 分类:综合 2014-11-23

问题解答:

我来补答
操作系统会为每一个变量分配一个地址也就是一块内存,根据这个数据的类型决定这个内存快的大小,然后每个内存快都会有一个标记,也就是我们说的地址,在这里就是0012FF7C像这样的表达的(以十六进制表示),然后当我们对这个变量进行操作的时候,操作系统会先找根据这个标记找到相应的内存块,然后把这块内存里面的东西取出来进行操作,所以&X指的就是存放X的那块内存的标记,也就是我们说的地址.
我也不知道我这样说算不算啰嗦,但希望你懂就好了.
再问: 嗯嗯,这个概念我知道,那请问如果以上给出来的是个考试题,问你运行结果是什么的话,那笔试是做不出来的对么?因为是操作系统自己分配的是么?只有机试才有结果咯?
再答: 怎么可能算得出来的呢 这个是操作系统的事,对一个程序来说,每次运行的时候给同一个变量分配的地址(内存)都是不确定的,这个地址值是操作系统管理的。 你要做的事就是引用以及解引用
 
 
展开全文阅读
剩余:2000