Mar*_*Kim 1 c++ syntax pointers typedef
我的书说
typedef Card* Cardptr;
Run Code Online (Sandbox Code Playgroud)
"将新类型名称定义为类型Cardptr的同义词Card*." 我看到*符号仅修改Cardptr,如果还有其他同义词,则不会被*符号修改.这对我来说很困惑.我的书让它看起来像实际的结构类型Card*,这让我觉得其他同义词的类型Card*也是如此
typedef Card* Cardptr, n;
Run Code Online (Sandbox Code Playgroud)
哪里n也会有这种类型Card*.如果他们移动这样的*符号,会不会更清楚?
typedef Card *Cardptr, n;
Run Code Online (Sandbox Code Playgroud)
这样一来,你就知道该类型实际上是Card,这Cardptr仅仅是一个指向它,这n是不是一个指针.这是什么原因?
C++通常不关心空格,因此编译器认为以下两个语句是相同的:
typedef Card* Cardptr;
typedef Card *Cardptr;
Run Code Online (Sandbox Code Playgroud)
同样,三个声明
int* a;
int *a;
int * a;
Run Code Online (Sandbox Code Playgroud)
无法区分.
如果它们移动了会不会更清楚
*[so]你会知道类型实际上是Card,它Cardptr只是指向它的指针,而n不是指针.这是什么原因?
编码人员编写声明的方式只是品味和风格的问题,两者都是合理的:
这将使我更喜欢int *a在int* a:
int* a,b; // declares and int* and an int; illogical, right?
Run Code Online (Sandbox Code Playgroud)
这将使我更喜欢int* a在int *a:
int *a = 0; // a (an int*) is set to zero (a.k.a NULL), not *a; illogical, right?
Run Code Online (Sandbox Code Playgroud)
现在,我的建议是:在这两种形式之间进行选择并始终坚持下去.