指针对很多事情都很有用,以至于有时无法理解它们在特定代码行中的含义。
例如,有时您使用指针来表示一系列元素:
char* char_array = "abcd";
int* int_array = malloc(5 * sizeof(*int_array));
有时您使用指针在堆上分配单个对象或使一个元素指向另一个元素:
int a = 5;
int* int_ptr = &a;
struct item* an_item = malloc(sizeof(*an_item));
当两者都使用碰撞时,连续的指针变得不可读:
struct cell** board;
// Does this represent a succession of cell allocated on the heap,
// a succession of pointers to uniques cells (like an array),
// a succession of pointers to multiples cells (like a two dimensional array)?
// Of course the more you add pointers the more it becomes confusing.
struct cell*** board;
我考虑过使用typedef
or 宏来创建一个表示指针的类型,该指针用作引用或已被 malloc 编辑过的东西。
这可能是双刃剑,因为在某些情况下我会获得可读性,但它也会混淆代码。
您建议如何生成更易于理解指针含义的代码?