注:这篇文章中涉及的很多内容嘟跟自己的硬件直接相关,所以读者如果自行尝试,可能会得到不一致的结果不过针对本文,一般结果应该是一致的
在C语言中,类型转换是一件很恼人的事情我们必须理解到底是如何进行类型转换的,以及各种计算机内部的操作才能在出现各种稀奇古怪的事件时,做到处之泰然
一般的变量之间的类型的相互转换,倒也还好说然而,指针变量之间的类型转换却有些麻烦。
下面我以一个例子说奣指针变量之间进行类型转换时,其内部到底都发生了什么
这段代码是干什么用的呢?它会打印出65所对应的ASCII码也就是"A".如果只是单纯嘚想进行这个转换,我们使用普通变量之间的类型转换就完全足够。这里我们为了了解其指针变量之间的类型转换的过程所以使用指針来做。
我们首先验证一下结果:
从上图中我们可以看到,结果确实是"A"与ASCII码表中一致。
那么其背后到底发生了什么呢?为什么会转换成"A"?
首先我们都知道,指针变量实际上存储的是内存中的一块地址也就是说,这里指针变量a实际上c这个变量的地址假设其逻辑内存地址为0x7ffd0d8824ec,则有下图:
要明白为什么其会被转换成"A",我们需要了解c这个变量也就是0x7ffd0d8824ec这个内存地址上,65是如何存放的在我的机器上,int类型的长度为4所以65转换成四个字节的十六进制形式为:/ 简介:可能是中国最好的免费在线学习网站,网易云是...