‘壹’ 在计算机中常量有没有地址
有,常量和变量都有地址,只是常量地址对应存储单元不更新
‘贰’ c语言中,常量到底占不占内存空间
c语言中,常量占内存空间。
变量使用前必须先进行定义。在内存中分配一块存储空间给变量,以便以后存储数据。如果定义了多个变量则为多个变量分别分配不同的存储空间。
不同类型的变量占用不同大小的存储空间,因为内存极其有限,分配适当的存储空间可以以最少的空间来存储它们,以节省空间。
(2)c语言中常量在内存里有没有地址扩展阅读:
变量使用注意:
变量的作用域:从变量定义的哪一行开始,直到代码块结束。
Return;退出函数,清除内存中的数据。
建议:使用矩形方框和excel来分析内存。
代码块{}的作用:可以用来提高性能,即时回收不再使用的变量。
‘叁’ C语言,一个常量为什么不能取地址比如&8或者&2056之类的
只有保存在内存中的变量或常量,才会有一个与之相关的内存编号(地址)。像8,3.14159,"yes"等直接量,它们的值不会、也没有必要保存到内存中。因此,一般不能取这样的直接量缺毁的地址。
此外,也不能取一个宏的地址,如:
#define PI 3.14
//不能取PI的地址
//double *p=Π
以下可行(且是常规做法):
const int n=1;
const int *pi=&n;
因为n保存漏丛在内存中,而const用来指定这个内存不可修改。
以下也可行(但是非常规做法,有风险):
int *pi=(int*)2056;
这句的意思是将2056当成一个内存的地址,令pi指向这个地址。因为编号为2056的内存的情况是未知的(它是哪个程序的?是系统内存?是位于数据区还是代码区?可读写吗?伏搜备),因此,这样存在巨大的风险。
‘肆’ 请问c语言里常量有固定存储地址吗
这是这样子的陪罩歼,当你定义一个变量a,b以后,这时在内存中就产生了两个地址,再给两个地址存储值,这芦冲个8就是存闷祥储在a,b地址中的值。
8是一个值,如果没有定义在内存中是没有的,当你定义一个变量以后,产生了一个地址,这个地址中存了一个数值8。
‘伍’ 为什么&4在c语言中不行呀! 难道常量没有地址吗!
首先,4是常量(且有地址),但在C语言中规定了&只能对变量使用,对常量使用&是没有定义的(也就是说没规定这样的操作是什么意义),所以结果是未知的,有的编译器认定为错,有型弯销的认定为对,但是给出的结果也不是你想要的(给出的并不卜游是闹拿常量的地址)。
‘陆’ C语言,为什么常量不能取地址比如&508
变量可以取地址,因为编译器会在内存中分配一个空间来存储对应的数值。
常量,尤其是数值型数据,它会被直接放到汇编指令里面,比如一个赋值语句
c=508;
编译衡森的结果,很可能就是MOV R1, #508这样的一个汇编语句。
那就谈不上地址了。
字符串型常量,比如“HELLO”咐迅亩,它就会是放在某个内存空间中,待程序去读取的。
这个问题,可以通过反汇编来查看。高级语言的行为,最终是要转换成机昌袜器语言来得到执行的。
‘柒’ 请问c语言里常量有固定存储地址吗
int a,b;a=8;b=8;这首先是一个定义变量并给变量赋值,实际上并没有涉及到常量,呵呵,但是它们有不同的地址,因为它们的变量名不同,地址是根据变量名分配地址的,那么常量呢,它也是有地址的,只是和变量存贮的地方不同,但是存储的形式是一样的,就是在内存的地方不同,内存中有专门放常量的,通过存储方法的角度是区分不了变量和常量的,只能通过其存储的值是否变化来区分(以人的角度),和存放的地点不同区分(机器的角度)
‘捌’ c语言中,常量是存放在内存中吗
关键的是,常量和变量是放在不同的"段"(section)里,程序一旦加载,常量/变量自然都在内存里了。
常量和全程变量,通常放在初始化段;局部变量,通常在栈里;
还有一种情况,比如汇编里的立即数(mov
ax,
12),它是直接放在指令里的,也即是代码段里.
‘玖’ c语言中,常量是存放在内存中吗
常量和变量是放在不同的"段"(section)里,程序一旦加载,常量/变量自然都在内存里。
在程序的运行过程中,把需要处理的数据存放在内存储器中,称始终保持不变的数据为“常量”,称存放可变数据的存储器单元为“变量”,其中的数据称为变量的值。
整数是以补码的形式转换为二进制代码存储在计算机中。
实数是以IEEE754标准转回换为二进制代答码存储在计算机中。
字符本质实际也与整数的存储方式相同(先通过ASCII码把字符转换为对应的整数,再按整数以补码形式转换为二进制)。
(9)c语言中常量在内存里有没有地址扩展阅读:
在除了‘C/C++’的一些高级程序语言中,‘常量’可以被称作,“在一个信息变化过程中,始终不发生改变的量”,其可以是不随着时间变化的某些量的固定信息;也可以表示为某一数值的字符(或字符串),常被用来标识、测量和比较两者的差异。
但在 ‘C/C++语言中’,‘常量’如果还用‘运行过程中不变的量’来描述,就显得不太准确了,甚至是在具体使用时,这就是一个错误的概念。在 ‘C/C++’中,定义‘指针常量’时,根据‘const ’的位置的不同,可以定义出几个不同的形式,虽然其看起来‘符合常量的概念’,但是在实际运行中,其值或地址值是会发生变化的。所以本质还不是‘常量概念’
‘拾’ C语言常量和表达式有地址吗怎么读取
这个情况比较多,不过一般说以下两种情况下的常量是有地址的:
1、如果是以const关键字修饰变量而产生的“不可变变量”的话,是有地址的,如const
int
a
=
0。
但是严格来说const修饰只是产生了不可变变量,并不是严格意义上的常量。
2、字符串常量,例如
char
*a
=
"abc";那么字符串“abc”就是一个字面值字符串,这是一个常量,其地址就是这个字符串第一个字符所在的地址。
再有像是字面值数字
"int
a
=
5"里边的5,是没有地址的。
表达式本身作为代码,并不拥有地址。但是用来组成表达式的变量或常量是可以拥有地址的。
获取一个常量或变量的地址可以用“&”取址符,例如:
const
int
b
=
0;
const
int
*
pb
=
&b;
那么pb里边就是b的地址了。