在C / C ++中声明指针变量的正确方法

我注意到有人使用以下表示法声明指针变量。


(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;

谢谢。


函数式编程
浏览 747回答 3
3回答

翻过高山走不出你

我个人更喜欢*将其余类型的char* p;  // p is a pointer to a char.人们会争辩“但随后char* p, q;会产生误导”,我对此表示“不要这样做”。

神不在的星期二

怎么写没有区别。但是,如果您想在一行中声明两个或多个指针,最好使用(b)变体,因为很清楚您想要什么。往下看:int *a;int* b;      // All is OK. `a` is pointer to int ant `b` is pointer to intchar *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.
打开App,查看更多内容
随时随地看视频慕课网APP