double在c语言中的意思double在C语言中的意思

2021-03-05 20:31:42 字数 1148 阅读 6876

1楼:虎童儿

地址是表示存储器中存储单元位置的非负整数。所有可用的地址的集合称为地址空间。现代的编译器中,对象指针的值是同一地址空间的元素。

在32位编译器中,这个值的上限是2^32-1。对象是运行期内存中的数据存储区域,这片区域是连续的。指针指向对象,则它的值等于对象的首个字节的地址。

对象的大小可以在编译期根据类型确定,因此在确定的时刻,指针(包含被指对象的类型)可以唯一地确定对象的存储。指针:一类类型的统称。

指针类型的实例是表达式,可能是一个对象。有时候把指针对象简称为指针,注意不要混淆。左值和右值:

表达式中的左值具有对象语义,而右值没有。通俗点说左值可以出现在赋值操作符=的左边,而右值不可以(c语言中右值可以简单地理解成值)。&操作符作用于一个左值,获得一个右值指针。

对象地址作为按字节编址的内存单元的编号,最小单位是1(对应于一个字节),且必定是地址空间内的元素。指针的值用来表示地址。所以,指针不能指向小于一个字节的存储区域(位段),使用&操作符试图获得指向它的指针是非法的。

chara[3],*p;声明了两个对象:类型为char[3]的a、类型为char*的p。p=a;使p的值等于a——由于p和a的类型不同,所以显然发生了静态类型转换才能保证表达式的合法性。

表达式a在这里并不作为左值而是隐式地转换成一个char*类型的指针(不是对象,而是临时对象,或者精确地说,一个不在运行期占据存储空间的右值),等于&a[0]的值,即a[0]的地址。注意数组元素的地址是编译期就能确定的常量,所以并不需被分配空间,不用存储在对象中。数组a的地址&a(由于数组的存储方式,这个值等于&a[0]的值)作为常量直接被编译到目标**中,而不是在运行期再计算出来。

这里需要计算的是&a[i],因为i的值是不能在编译期唯一被确定的。&a[i]相当于a+i,a在这里同样隐式转换为指针右值。根据指针的加法规则,a+i等于(char*)((int)a+sizeof(char)*((int)i))(这里用显式类型转换指出表达式的类型,下同)。

同时,p是和a对应类型的指针,它每次被++后,效果相当于p=(char*)((int)p+sizeof(char)*1)。由于i每次增加1,因此可见增加的部分的数值是同步的;而p=a导致它们的初值是相等的。因此循环体中每次输出的值相等。

2楼:心烦就看片

双精度浮点型数据,位数应该因编译环境不同而不同吧。

在C语言中是什么含义,"+++"在C语言中是什么意思?

1楼 匿名用户 在c语言中, 的含义是 单目运算符, 是原始值累加1。 c语言是一门通用计算机编程语言,应用广泛。c语言的设计目标是提供一种能以简易的方式编译 处理低级存储器 产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管c语言提供了许多低级处理的功能,但仍然保持着良好跨平台的...

C语言中,定义double p的指针,那么p的类型是

1楼 匿名用户 直接输出p就是一个长整型的数字,你定义的double 就是指的这个内存地址保存的数据的类型,输出这个数据则会带有小数点,输出地址不会 2楼 匿名用户 汗死。。。指针地址是用intger类型的。。占八位。。 跟你这个double有什么关系。。你打印下就知道了。用double来定义是因为...

在C语言中“a b”是什么意思,c语言中,a^b是什么意思?

1楼 匿名用户 a 异或 b 按位异或 比如 a 为 5 0101 b 为 7 0111 0010 对应位相同为0, 不同为1 希望对你有帮助。谢谢 c语言中,a b是什么意思? 2楼 匿名用户 按位异或, 例如 include int main 输出结果是8 1010 10 0010 2 1000...