一直有个问题困扰着我,在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编程。

本回答被网友采纳

char a=5,把一个整数赋值给一个字符型变量,不理解什么意思,是数字5...
将整数5赋值给字符型变量a,实际上是将字符编码为5的字符(即ASCII码表中的ENQUIRY字符)赋值给a。在C语言中,字符型变量实际上是整型变量的一种特殊情况,它占用一个字节的存储空间,可以存储0到255之间的整数值,也可以用单引号括起来的字符常量来初始化。在赋值时,如果将一个整数赋值给字符型变量,...

新人自学C语言,有个问题不明白 int a=5.5 printf("%d",a) 输出会是5...
你说“输入和输出都要定义吗”,这完全就是没有明白C语言,通俗的说,定义一个变量是为了让系统帮你创建一个变量,比如你的程序 :int a=5.5;你让系统帮你创建了一个整形变量a,但你却给了一个浮点型(也就是数学中的小数)的数据给系统,让系统把5.5赋给a(其实我说“赋值给a”不对,确...

int a=5,a*=a+=a*a 结果是多少?怎么算的?
第一步,先对整形变量a赋予初始值5。第二步,计算最右边的a*a,结果是25,并将25赋值给变量a。第三步,计算a+a,结果是50,并将50赋值给变量a。第四步,计算a*a,结果是2500,并将2500赋值给变量a。所以最后的运算结果是a=2500。

在C语言中,若有语句:int+a=5;int+c=++a;此处c的值是?
:int a=5;int c=++a;c的值是6

C语言基础,这道题是什么意思呢?
表达式变成int a =5 此时就只剩下‘=’赋值运算符了 a = 5了 就把整个右值(就是赋值运算符右边的最后结果)赋值给变量a了 总结:优先级别高于低对于运算而言就是谁先谁后的问题 还有个概念那就是运算符的结合性(这个你自己看书) 运算符的结合性和运算符的优先级 能够让我们程序员准确写出我们...

简述c语言的基本语句
C语言的基本语句是构成程序的基本单元,它们用于执行各种操作,如声明变量、控制程序流程、进行算术运算、输入输出等。主要包括以下几类:声明语句:用于声明变量、函数等。例如,int a; 声明了一个整型变量a。赋值语句:用于给变量赋值。例如,a = 5; 将整数5赋值给变量a。表达式语句:由一个表达式后跟...

C语言问题: #include <stdio.h> int main() { int a=3,
a+=b,代表给a赋值为(a+b),-=同理,同时这俩运算符平级。所以顺序为首先a+=a,此时a=2a;然后a-=a,此时=0;然后c=a=0

关于C语言中scanf的一个问题
完全不明白你为什么要这样设计,你的目的是为了赋值给a和b,直接scanf("%d%d",&a,&b);输入的时候按下a的值回车再按下b的值再回车就行了。有时候能够实现目的就可以了。

c语言:输入5个整数,放入数组中,输出最大元素和最小元素的值
思路:先定义一个数组,并键盘输入一个数赋值给数组的第一个数,且把该数赋值给最大值和最小数,接着for循环输出剩下4个数,并判断该数和最大值最小值的大小关系,更新最大值和最小值,最后输出最大值和最小值。参考代码:include "stdio.h"int main(){int a[5],max,min,i;scanf("%d",...

c语言的这个编程题目怎么做呀 求详细解答
判断--x==y++时,取x=5和y=5相比,然后y变成6,比较的结果为真,于是执行--x,x先变成4,赋值给a 所以a的值是4,然后b=x++,b的值是4,然后x变成5 最后c=y; c的值变为6 所以是选择答案B

相似回答