老同志,旧问题!

yxlchw 2004-04-02 09:13:54
请先看如下代码:
#define BITS 15
#define MAX_CODE ( ( 1 << BITS ) - 1 )
#define TABLE_SIZE 35023L
#define TABLE_BANKS ( ( TABLE_SIZE >> 8 ) + 1 )
#define END_OF_STREAM 256
#define BUMP_CODE 257
#define FLUSH_CODE 258
#define FIRST_CODE 259
#define UNUSED -1

struct dictionary {
int code_value;
int parent_code;
char character;
} *dict[ TABLE_BANKS ];

#define DICT( i ) dict[ i >> 8 ][ i & 0xff ]

这是我在LZW算法中看到的代码片段,让我不能理解的是“#define DICT( i ) dict[ i >> 8 ][ i & 0xff ]”这一句,宏定义DICT(i)等价于dict[ i >> 8 ][ i & 0xff ],是个二维下标,但*dict[TABLE_BANKS ]定义的是一维呀,可这个程序编译是正确的。应该如何理解这句宏定义?
...全文
35 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
psbeond 2004-04-02
  • 打赏
  • 举报
回复
按宏展开就行
langjifengyu 2004-04-02
  • 打赏
  • 举报
回复
定义的是一个指针数组啊
指针数组这样表示完全可以的啊
例如:
int *a[2],b[2][2];
在这个指针数组里面
a[0]就代表的是B数组的第一行
A[1]代表的是B数组的第2行
a[0]+1就是第一行第2列的元素了
运用指针数组的目的是为了节省内存空间
因为他完全可以有多少存多少,不必浪费
尤其在指向字符串的指正数组
字符串大小不一
而指针数组是++循环,当字符串没了
他也就自动到下一行,
psbeond 2004-04-02
  • 打赏
  • 举报
回复
按宏展开就行
wshcdr 2004-04-02
  • 打赏
  • 举报
回复
我试试

#define BITS 15
#define MAX_CODE ( ( 1 << BITS ) - 1 )
#define TABLE_SIZE 35023L
#define TABLE_BANKS ( ( TABLE_SIZE >> 8 ) + 1 )
#define END_OF_STREAM 256
#define BUMP_CODE 257
#define FLUSH_CODE 258
#define FIRST_CODE 259
#define UNUSED -1

struct dictionary {
int code_value;
int parent_code;
char character;
} *dict[ TABLE_BANKS ];

#define DICT( i ) dict[ i >> 8 ][ i & 0xff ]

首先dict[ TABLE_BANKS ]
是定义了一个结构指针数组

然后#define DICT( i ) dict[ i >> 8 ][ i & 0xff ]
这里dict[i>>8]就是定址到一个指针上,该指针指向一个结构
那后面的[ i & 0xff ]应该是指到该结构中的一个成员上

以上推测,仅供参考!
zxl_lim 2004-04-02
  • 打赏
  • 举报
回复
是个指针数组嘛.
w3guy 2004-04-02
  • 打赏
  • 举报
回复
*dict[ TABLE_BANKS ] 是个指向指针的数组,可以用二维下标表示。

比如 char* str[2], 你可以用str[0][0] 表示第一个字符。
特效相机FxCamera 软件语言:英文 软件资费:免费软件 适用固件:Android2.3+ 更新时间:2014-12-14 软件大小:13M 这款FxCamera特效相机可以说是市场里拍照应用的老同志了,而且也是为数不多能免费还能获得如此高评价的这款FxCamera特效相机可以说是市场里拍照应用的老同志了,而且也是为数不多能免费还能获得如此高评价的应用,越老越有味道呀。不过新版本貌似和照片社区类似,有点鸡肋了。 特效相机 FxCamera v3.4.8 功能说明: FxCamera是一款能让你的摄像头拍出各种带特殊效果相片的软件,除了一般拍照模式之外,还内建了ToyCam (LOMO风)、Polandroid (拍立得)、Fisheye (鱼眼)、SymmetriCam (对称特效)跟Warhol (普普风)等拍照特效。 特效相机 FxCamera效果说明: 电影效果:ToyCam,拍出来的画面就如同银幕电影的那种深邃感。 照片效果:Polandroid,故名思议,使相片具有发黄历史感的视觉。 鱼眼效果:Fisheye,这是一种变形效果,一个球面的世界充满了奇趣。 对称效果:SymmetriCam,左右对称,四角辐射对称,一人多影?容易! 波普效果:Warhol,这是一个艺术家的名字,安迪-沃霍尔,六十年代的波普艺术领袖。 普通效果:Normal,就算普通,它也是带滤镜的哟。 特效相机 FxCamera v3.4.8 更新日志: - Bug修复和小的改进应用,越老越有味道呀。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧