本文共 1274 字,大约阅读时间需要 4 分钟。
#include#include #include struct data { int i; char msg[13];};void main(){ char *da = malloc(20); char *pda = da; // 内存块初始化,写内存操作 // 我的机器为:小端字节序,所以 int 类型数据的低序字节写在内存低位 // 首先在前 4 个字节中以小端字节序写入十进制数值:1314,紧接着是字符串‘hello!\0’ *pda++ = 34; *pda++ = 5; *pda++ = 0; *pda++ = 0; *pda++ = 'h'; *pda++ = 'e'; *pda++ = 'l'; *pda++ = 'l'; *pda++ = 'o'; *pda++ = '!'; *pda = 0; // 字符串结尾 struct data *sd; sd = (struct data *)da; // 将前面分配的地址赋值给结构体 // 打印结构体中的 字符以及字符串 // 从地址块中,先按小端字节序读取 4 个字节作为成员变量 i 的值, // 接着继续读取余下的字节直至读到字符串末尾即:空字符 ‘\0’ 为止,作为成员变量 msg 的值, // 这里并没有什么类型检查之类的,而是按照结构体中成员变量声明的顺序在内存块中读取对应类型长度的字节, // 其中要注意 字节序问题,以及 C 语言中的字符串以空字符 ‘\0’ 作为结束标志 printf("i: %d, msg: %s\n", sd -> i, sd -> msg);}
运行结果(达到预期):
ubuntu@cuname:~/dev/beginning-linux-programming/test$ gcc -o test3 test3.cubuntu@cuname:~/dev/beginning-linux-programming/test$ ./test3i: 1314, msg: hello! // 达到效果
转载地址:http://lclsi.baihongyu.com/