找到了一个有趣的使用typedef,我真的没有看到它的需要.
typedef int Color[3];
Run Code Online (Sandbox Code Playgroud)
那么使用将是:
Color pants;
pants[0] = 0;
etc.
Run Code Online (Sandbox Code Playgroud)
通过ptrs使用typedef创建了一些看起来很奇怪的代码.
为什么不使用结构?
struct Color {
int r;
int g;
int b;
};
Color pants;
pants.r = 0;
etc.
Run Code Online (Sandbox Code Playgroud)
您可以使用联合将变量表示为数组或单独表示,这是不可思议的,但仍然清楚它比单个值更复杂.
有人可以提供有关使用typedef'd数组与结构的优点的见解吗?
由于几个原因,使用普通数组是一个坏主意.
int[]衰减int *.operator=分配数组.任何一个struct或boost::array将更好地服务于目的.
结构形式的另一个优点:如果您需要将Color传递给函数然后获取其大小:
void foo (Color c)
{
size_t s = sizeof(c);
}
Run Code Online (Sandbox Code Playgroud)
如果使用数组形式,c将被解释为a Color *(数组通过指向它们的第一个元素的指针传递)并且sizeof(c)将等于sizeof(int*).去过那里,做到了,被咬了.
编辑:结构形式将表现为(天真)预期.
| 归档时间: |
|
| 查看次数: |
13362 次 |
| 最近记录: |