浮点型在内存中的存储,指针的相关问题

1.举一个简单的例子来说明浮点型在内存中存储的特殊性

在IEEE规定下浮点数在内存中通常可以显示为(-1)*s^M*2^E的形式,在32位系统中s表示符号位且占用一个字节,m表示有效数字位占用23个字节,E表示指数位占用8个字节

指数位E是无符号数,在表示小数部分的时候也可能出现负数,所以需要 一个中间数进行过渡

无论正负如果E=-1那么存入内存中则需要+127或者+1023作为中间数存储。

int main()
{
	int i = 9;
	float* pfloat = ((float*)&i);
	printf("%d\n", i);
	printf("%f\n", *pfloat);
	*pfloat = 9.0;
	printf("%d\n", i);
	printf("%f\n", *pfloat);

	return 0;
}

代码输出

>>>9
>>>0.000000
>>>1091567616
>>>9.000000

2.指针类型和指针传参

(1)指针是个变量

(2)指针的大小是固定的在不同的平台上大小不同,32位处理器为4个字节,64位处理器为8个字节。

(3)指针的类型决定了指针+-运算的步长,也决定了解引用操作的权限。

指针也往往和数组建立联系。

字符指针的表示

int main()
{
	char ch = 'w';
	char* c = &ch;
	printf("%c\n", *c);
	return 0;

}
int main()
{
	char arr[] = "abcdef";
	char* pc = arr;
	printf("%c\n", *pc);//数组名为首地址
	return 0;

}

数组名代表首地址,指针通过解引用获得字符数组的首个元素;

指针数组和数组指针的区别

指针数组本质上是数组

例如:int*p [5];本质上是存放整型指针的数组

而数组指针本质上是指针

由于[]()的结合性高于*所以数组指针申明为 int(*p)[];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值