我注意到有人使用以下表示法声明指针变量。(a) char* p;代替(b) char *p;我用(b)。符号(a)背后的合理性是什么?符号(b)对我来说更有意义,因为字符指针本身不是类型。而是类型是字符,变量可以是指向字符的指针。char* c;看起来好像有一个char *类型,而变量c是该类型。但是实际上,类型是char,而* c(由c指向的内存位置)就是该类型(char)。如果一次声明多个变量,这种区别就很明显。char* c, *d;这看起来很奇怪。c和d都是指向字符的指针。在这种情况下,下一个看起来更自然。char *c, *d;谢谢。
3 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
我个人更喜欢*将其余类型的
char* p; // p is a pointer to a char.
人们会争辩“但随后char* p, q;会产生误导”,我对此表示“不要这样做”。
神不在的星期二
TA贡献1963条经验 获得超6个赞
怎么写没有区别。但是,如果您想在一行中声明两个或多个指针,最好使用(b)变体,因为很清楚您想要什么。往下看:
int *a;
int* b; // All is OK. `a` is pointer to int ant `b` is pointer to int
char *c, *d; // We declare two pointers to char. And we clearly see it.
char* e, f; // We declare pointer `e` and variable `f` of char type.
// Maybe here it is mistake, maybe not.
// Better way of course is use typedef:
typedef char* PCHAR;
PCHAR g, h; // Now `g` and `h` both are pointers.
// If we used define construction for PCHAR we'd get into problem too.
- 3 回答
- 0 关注
- 746 浏览
添加回答
举报
0/150
提交
取消