为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
函数式编程 2019-11-25 15:50:56
我注意到有人使用以下表示法声明指针变量。(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;会产生误导”,我对此表示“不要这样做”。


查看完整回答
反对 回复 2019-11-25
?
神不在的星期二

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.


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 701 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信