一直有个问题困扰着我,在c语言里, int a=5; 计算机运行的时候要把5赋值给a,(接问题补充)

(接上面问题)也就是要把5存到内存中的某个位置,这个位置怎么和变量a发生关系的,计算机要用a里面存的内容 5 的时候,怎么在内存中找到这个5的。[一共有20个财富值,全拿出来了
不能因为超出c语言范围就不解决。这真是。。。。不靠谱,我还是自己去图书馆看编译原理去吧。

第1个回答  2014-09-29
兄弟 首先你这个问题没什么太大意义,我们要用C语言 确实和你这个问题答案是什么关系不大。不过 我推测 变量a应该是内存的某个特定地址,a里面有个地址,这个地址就是5的地址。而a所在的地址 只是一个变量对应的一个地址而已。就像有三个地址,他们连续存三个变量。然后这三个地址中存的是变量里面那个数的地址。我猜测应该是这样追问

当你说意义不大,我就不想往下看了。结果我还是看完了,你假设的不能解决问题。你又假设出来的地址,计算机该怎么分辨哪个是哪个?

追答

这样吧 我举个例子,有1000,1001,1002三个地址。假设你创建了一个变量a ,系统就会把a这个变量当成是1000这个地址,1000里面存的是一个地址,这个地址就是5所在的地址。 当然这些说的东西只是我自己的理解。我不敢肯定一定是对的。 但是有一点 这个问题意义 确实不大,在C里面你这样搞懂指针 基本上内存就可以用好了

追问

系统怎么辨识1000的?

追答

。。。因为系统里1000 他本来就是一直放变量的一个地址,他不放别的,我感觉是

追问

那如果有变量b,计算机怎么分辨这个1000里放的是b还是a.

第2个回答  2014-09-29
内部创建指针对应a,指向某个内存地址,从而把a和这个地址联系起来。引用a的内容时,根据指针找到对应的内存,拿内容。追问

计算机“根据指针找到对应的内存”,根据的这个指针计算机又是怎么找到它的值的?

追答

比如指针a指向0x00000010,就去要这个地址的存放值啊,这个地址最终指向物理内存里的某个存放位置,一堆0和1拿回来才知道是5啊。

追问

要去0x00000010去存放5,那计算机怎么得到0x00000010这个量的。如果你回答从a那得来的,那计算机怎么找到a的。such a stupid loop,en heng?

追答

那个已经出了C语言的范围了,去看汇编和windows kernel编程。

本回答被网友采纳
相似回答