本课继续讲解了C语言的强制类型转换,之后介绍了结构体,数组以及结构体中的数组。
*和&的技巧
例1:
double d = 3.1416;
char ch = *(char*)&d;
取出d的地址,并重新解释为char型,然后解引用。由于double为8bytes,而char为1bytes,因此ch表示的是原来double中截取1bytes的结果。
例2:
short s = 45;
double d = *(double*) & s;
取出s的地址,并重新解释为double型,从2bytes变成8bytes,解引用后赋值给d。
字节存放顺序:大尾(big endian),小尾(small endian)
字节存放有大尾和小尾之分。如果对应数据的高字节存放在低地址就是大尾,反之,高字节存放在高地址的就是小尾。
例如:
short int a = 0x1234
大尾存放时:
偏移地址 存放内容
0x0000 0x12
0x0001 0x34
小尾存放:
偏移地址 存放内容
0x0000

本文深入探讨了C语言中的强制类型转换,包括如何使用*和&操作符进行转换,以及字节顺序(大尾和小尾)的概念。接着介绍了结构体和数组的用法,特别是结构体中的数组布局,并提到了C语言数组没有边界检查的问题。最后,通过一个swap函数的例子强调了数据的二进制字节数在类型转换中的关键作用。
最低0.47元/天 解锁文章
1211

被折叠的 条评论
为什么被折叠?



