社区
C语言
帖子详情
结构和数组的转换问题
Alexeyomux
2002-09-04 07:46:33
定义结构
struct
{
char a;
short b;
int c;
char d;
}abc;
struct abc* p;
char buf[100];
p = buf;
赋值后输出buf(16进制)
其中要改变编译对齐参数
请问输出buf(16进制)和改变编译对齐参数是什么意思?此题作何解?
...全文
21
7
打赏
收藏
结构和数组的转换问题
定义结构 struct { char a; short b; int c; char d; }abc; struct abc* p; char buf[100]; p = buf; 赋值后输出buf(16进制) 其中要改变编译对齐参数 请问输出buf(16进制)和改变编译对齐参数是什么意思?此题作何解?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cxjddd
2002-09-04
打赏
举报
回复
可以优化一下啊:
struct abc
{
char a;
char d;
short b;
int c;
};
ustcxumq
2002-09-04
打赏
举报
回复
多谢楼上的,也让我更深的理解了位和存储
Alexeyomux
2002-09-04
打赏
举报
回复
感谢各位指点!
joke100
2002-09-04
打赏
举报
回复
#pragma pack(1) // 单字节对齐
struct abc
{
char a;
short b;
int c;
char d;
};
#pragma pack() // 恢复对齐的默认设置
一般默认是四字节对齐,如果不改为单字节对齐的话,那么a与b之间将插入3个字节,b与c之间插入2字节....
abc HAHA;
sizeof(HAHA);
所以,不单字节对齐,sizeof(HAHA) > (sizeof(HAHA.a) + sizeof(HAHA.b) + sizeof(HAHA.c) + sizeof(HAHA.d))
明白原因了吧???
答案,四字节对齐sizeof(HAHA)等于16
单字节对齐sizeof(HAHA)等于8
mzz_810
2002-09-04
打赏
举报
回复
题目要求是对p的每个成员赋值,然后打印出buf,看看p的成员是如何在内存中存放的。在不同的对齐参数下,存放位置是不同的。
这个题目目的是让你了解变量在内存中的存放方式!
mzz_810
2002-09-04
打赏
举报
回复
编译对齐参数指的是变量在内存中的对齐方式,对于32位CPU来说,一般缺省认为是按4字节对齐,因此结构abc的成员b是从偏移4字节处开始存放的,成员a后面3个字节是空着的。
但是,通过改变编译对齐参数,可以改变内存中的对齐方式,如指定:
#pragma align 1
则之后的代码是按字节对齐的,即成员a、b、c、d是连续存放的。
#pragma align 0 表示按缺省对齐方式
jerry921
2002-09-04
打赏
举报
回复
应该为:
typedef struct
{
char a;
short b;
int c;
char d;
}abc;
220个经典C语言源码
220个经典C语言源码 从简单到难的220来个经典C程序 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 自增/自减运算 008 数列求和 009 乘法口诀表 010 猜数字游戏 011 模拟ATM(自动柜员机)界面 012 用一维
数组
统计学生成绩 013 用二维
数组
实现矩阵转置 014 求解二维
数组
的最大/最小元素 015 利用
数组
求前n个质数 016 编制万年历 017 对
数组
元素排序 018 任意进制数的
转换
019 判断回文数 020 求
数组
前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较整数大小 023 指向
数组
的指针 024 寻找指定元素的指针 025 寻找相同元素的指针 026 阿拉伯数字
转换
为罗马数字 027 字符替换 028 从键盘读入实数 029 字符行排版 030 字符排列 031 判断字符串是否回文 032 通讯录的输入输出 033 扑克牌的
结构
表示 034 用“
结构
”统计学生成绩 035 报数游戏 036 模拟社会关系 037 统计文件的字符数 038 同时显示两个文件的内容 039 简单的文本编辑器 040 文件的字数统计程序 041 学生成绩管理程序 。。。。 。。。。
一维
数组
转换
成树
结构
的
数组
一维
数组
转换
成树
结构
的
数组
,或者转成多节点的树
结构
,二维
数组
转换
为未知节点数的树
结构
数组
需要使用递归算法。
将一维
数组
转换
成树形
结构
数组
方法总结
我们在开发中经常会处理
数组
,特别是后端传给我们的扁平化
数组
,然后将它处理为多维
结构
的
数组
将扁平化
数组
转换
成树形
结构
数组
的n中方法 原始数据 var arr = [ { id: 1, pid: 0, text: '一级1' }, { id: 2, pid: 0, text: '一级2' }, { id: 3, pid: 1, text: '二级1-1' }, { id: 4, pid: 1, text: '二级1-2' } { id: 5, pid: 2, text: '二级2-1'.
JavaScript 层级
数组
常用工具方法(一)——
数组
结构
转换
本文介绍了 JavaScript 中层级
数组
的常用工具方法之一,即
数组
结构
转换
。在处理层级
数组
时,经常需要将
数组
从一种
结构
转换
为另一种
结构
,以满足不同的需求。本文将探讨如何使用 JavaScript 中的一些常用方法来实现
数组
结构
转换
,包括
数组
的扁平化、
数组
的嵌套
结构
转换
。通过学习这些常用的
数组
结构
转换
技巧,可以更加高效地处理层级
数组
数据,提升 JavaScript 编程的效率与灵活性。
使用ES6 将
数组
转换
为树
结构
将
数组
转换
为树
结构
的实现方式很多,多数实现方式都是采用递归的方式来实现。本文基于ES6来实现
数组
结构
转换
为树
结构
,利用对象的key唯一性特性以及根节点没有父节点的特性将子节点追加到父节点的方式,具体实现方式如下: const list2Tree = (list: any[], { id = 'id', pid = 'pid', isLeaf = 'isLeaf' }) => { const treeList: any[] = []; const dataMap = {}; if (lis
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章