2

而不是这样做:

int* const p;

还有这个:

const int* p;

难道你不能通过这样做更容易阅读:

typedef int* ptr;
const ptr p; //Constant pointer to an integer

和:

typedef const int ptr;
ptr* p; //Pointer to a constant integer
4

3 回答 3

3

真的没有理由这样做。它不仅会使您的代码可读性降低,而且实际上没有任何意义。

typedef const int ptr;

^ 这没有任何意义——它是一个 const int 但你称它为指针。只需保存自己和读者并输入

const int* ptr;

编辑:

直接回答你的问题:不,你不会让它更容易。

编辑#2

还有一点,当你有

typedef const int ptr;
typedef const long ptr;
typedef const float ptr;

它不仅没有意义,因为它们不是指针,而且现在你有一堆叫做 ptr 的东西,你会对你实际上在写什么感到困惑。

于 2013-08-13T03:51:56.770 回答
0

通过下面的链接。作者已经清楚地解释了何时使用 typedef 何时不使用。如果我开始解释,这个博客会越来越大。

http://www.oualline.com/books.free/style/c06.pdf

于 2013-08-13T03:57:56.980 回答
0

typedef当您对表示某事的新类型有特殊需要时,应该使用它。仅仅typedef为了节省打字而写一个是没有意义的,并且会导致代码更难阅读。

const用于隐藏or限定符的良好 typedef 示例是volatile只读硬件寄存器(在嵌入式软件开发中很常见)。你会写类似的东西

typedef const volatile int *ro_reg_t; /* readonly hardware register */

然后声明你的硬件寄存器:

const ro_reg_t CHIP_VERSION = (void *)0x4240000c;

这样你现在就可以写了

int val = *CHIP_VERSION;

但不是

CHIP_VERSION = 0xf00d;

或者

*CHIP_VERSION = 0xbaad;
于 2013-08-13T04:09:09.423 回答