类型定义常量长度的数组
typedef array of constant length
这是做什么,怎么做?
typedef int map_t [1<<MAX];
这行是做什么的?
假设MAX
是编译时已知的常量,则此代码:
typedef int map_t [1<<MAX];
map_t x;
与下面的代码相同:
int x[1 << MAX];
假设MAX定义为8:
typedef int map_t[1<<MAX];
与
相同typedef int map_t[256];
因为1 << 8
= 256。它表示将数字18中的位向左移动18次,如下所示:
1是二进制
0000 0010,也就是十进制的2
8班后:
1 0000 0000,也就是256的十进制
这里没有位掩码,只是简单地写
typedef int map_t[pow(2,MAX)];
我没怎么用过C,但是上面的代码应该可以编译,对吧?
编辑:上面没有编译,但如果我们动态分配它应该工作。
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- C++编程从外部文本文件定义数组大小
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 删除动态数组时未定义标识符
- 在定义字符数组(井字游戏)的 for 循环中应用输入限制
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 模板类中的数组定义
- C 结构数组定义
- 在C++中为指针数组定义NULL
- 为什么局部变量不隐藏数组定义中的全局变量
- 静态数组定义错误 C++
- C++ 二维数组定义
- 这是否是 C++ 中的有效 2D 数组定义
- 模板类数组定义不是类型名称、静态或枚举器C++
- 用静态2d数组定义类的方便方法是什么(并且2d数组的大小只有在编译时才知道)
- 如何将字符数组定义为常量
- 二维数组定义
- 如何保护数组定义,防止使用非零值进行不完整的初始化
- 为3D数组定义setter/getter属性
- 在静态成员数组定义中对自身使用sizeof操作符