c中struct和unsigned char*强制互相转化。
来源:互联网 发布:和英国人谈恋爱知乎 编辑:程序博客网 时间:2024/05/12 00:39
今天看c代码的时候发现一个struct强制转换成char*的,然后在自己的sublime上怎么都会报错,即使没有报错,但是运行时也会奔溃。
无奈使用牛逼烘烘的vs2017!!
果然可以了,试了几个不同的操作。
可以看到str转变后地址发生了变化,对str指向的对象操作的时候,结构体的数据也发生了改变。
所以我们可以看到,在c中struct是以一整块连续的块放在内存中的,其中顺序和是变量声明顺序一致的(如果没有优化的话);
这样做的优缺点:
缺点:很明显缺点一大堆,特别是涉及到地址和指针的时候一个不小心的改动就挂了。
优点:符合人们期望而存在的即是合理的,源代码是在网络编程中看到的,应用场景是
将ip头结构转化成unsigned char*,再加上偏移量,就拿到了数据,顺便将数据转为unsigned char*。简洁明了,一气呵成。
注意点:
我们不应当直接修改强制转变后的数据,而是把结构体看作一个地址,去取我们想要的数据,或者别的不修改值的用途。
如果要修改数据应当直接对结构体修改。
阅读全文
0 0
- c中struct和unsigned char*强制互相转化。
- char 、 unsigned char 互相转化
- typedef struct { unsigned char c : 4 ; }ss;
- print unsigned char in C && struct iovec
- C char* 转化为struct
- c语言中 char* 和 unsigned char* 的区别浅析
- unsigned char字符串和char字符串之间的转化
- CString Char *互相转化
- c 中强制转化详解
- bj-c中字符串和数字互相转化
- obj-c中字符串和数字互相转化
- unsigned char和char
- unsigned char 和 char
- char和unsigned char
- C语言之unsigned char和uint8_t
- unsigned int 转化成 unsigned char*
- C++ unsigned long 转化为 unsigned char*
- C++ unsigned long 转化为 unsigned char*
- SQL中的or与in的区别
- ssm安卓请求服务器返回json
- Java线程Dump分析工具--jstack
- 09.stack实现
- linux下修改新版本的mysql密码
- c中struct和unsigned char*强制互相转化。
- Who owns this IRP? (Process ID)
- Java反射机制--Class,Field,Method,Constructor
- JPEG压缩算法
- 成为Java顶尖程序员 ,看这11本书就够了
- log4j2的使用
- cookie知识总结
- Mac 下swig安装
- Redhat之linux定时任务命令