C++指针参照声明语法

Ada*_*ton 3 c++ syntax pointers declaration operators

令人难以置信的C++新手,并有一个(可能相当愚蠢)的问题:

我已经看到**在两种上下文中使用的运算符(我理解它是解除引用的解除引用):

char **arglist

char** arglist

语法之间是否存在有意义的差异,还是它们都完成了同样的事情?

Kir*_*rov 7

它们完全一样.但是在这种情况下,它们不是"取消引用取消引用",它们定义了指向指针的指针char.


我个人更喜欢,char** arglist因为**它就像是类型的一部分,它就像:

type var_name; // where `type` is `char**` and `var_name` is arglist
Run Code Online (Sandbox Code Playgroud)

但是,另一方面,它可能会产生误导,因为以下内容:

char** arglist1, arglist2;
Run Code Online (Sandbox Code Playgroud)

定义char**变量named arglist1,AND一个char名为的变量arglist2.

因此,为了用类型定义2个变量char**,您需要

char **arglist1, **arglist2;
Run Code Online (Sandbox Code Playgroud)

要么

char** arglist1, **arglist2;
Run Code Online (Sandbox Code Playgroud)

或者,来源:

char**arglist1, **arglist2;
Run Code Online (Sandbox Code Playgroud)

这三者都是一样的,这是个人喜好的问题.