c语言之强制类型转换

本文详细介绍了C语言中的强制类型转换,包括指针类型的转换、结构体之间的转换以及程序示例解释。讨论了指针加法运算、void指针的使用以及不同类型的指针赋值,并给出了相关示例,强调了类型转换在编程中的注意事项。
摘要由CSDN通过智能技术生成

C语言中,任何一个变量必须有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占用的空间代码不一样,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以不能简单的通过检查一个值的位来判断它的类型。
例如:定义如下:
int a;
float b;
double c;
long double d;
(假设他们所占的字节分别是4,8,8,10,而且连续存储于某个地址空间,起始地址是100,则我们可以得到如下的内存分布)
a变量就是由以地址100开始到103结束的4个字节内存空间内的0-1代码组成。b变量则是由以地址104开始到112结束的8个字节内存空间内的0-1代码组成。而在机器中,这些内存都是连续的0-1代码,机器并不知道100~103是整型而104~111是float型,所有这些类型都是编译器告知的。
当我们用a时,由于前面把a定义为int型,则编译器知道从a的地址开始向后取4个字节再把它解释成int型。那么(float)a,就是先按照int类型取出该数值,再将该数值按照int to float的规则转换成float型。所以强制类型转换就是按照某个变量的类型取出该变量的值,再按照to的规则进行强制转转换。如果是(类型名)常数,则是将该常数按照常数to类型 的规则进行强制转换。
指针也是一个变量,它自己占据一个4个字节的地址空间(由于程序的寻址空间是2^32次方,即4GB,所以用4个字节表示指针就已经能指向任何程序能够寻址到的空间了,所以指针的大小为4字节),他的值是另一个东西的地址ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值