English 中文(简体)
类型声明——点星号
原标题:Type Declaration - Pointer Asterisk Position
  • 时间:2010-04-24 10:56:33
  •  标签:
  • c++
  • pointers

在C++中,以下意思是“为固定点人提供记忆”:

int* number;

因此,星号是变型的一部分;如果没有,那就意味着“为星号提供记忆”。

那么,如果以下意思是“为两个点点点人提供记忆”的话,这是否更有意义?

int* number1, number2;
最佳回答

他询问了这段话。

  • if you think more C-ish you will say int *a and Employee *pE (so in your head you re thinking "the content of a is an integer")
  • if you think more C++-ish you will say int* a and Employee* pE (so in your head it s "a is an integer pointer")

You can think however you like, as long as you never declare two pointers on the same line.

我的工作。 页: 1 ∗ E/CN.6/2009/1。

问题回答

实际上,星号附属于变量(从C继承的公约),因此

int * number1, number2;

声明 编号1> (i.e. * /code>为int, 和> 编号2

间隔不会影响<代码>> 编号s的分类。 它只是象征性的分离者。 下面所有内容都与汇编者相同,因为空位在平价后将被拆除。

int *a;
int*a;
int* a;
int * a;
int/**a***/*/*a***/a;

用途

int* number1, *number2;

创建两点甚至更佳点,将其分成多个宣言,以避免混淆。

int* number1;
int* number2;

你过分简化了C++申报的结构(尽管你提出的要点完全合乎逻辑)。 只有在看上去,C++声明似乎包括名称类型和 com分离实体名称的顺序,但实际上在C++(以及C)声明中,声明实际上由申报人<>的类型名称和顺序组成。 你申报的实体的全套类型信息在2<>/em>之间,其部分地点实际上是其申报人的一部分。 这正是C++。 为了更好地反映声明的实际结构(如语言所示),将声明作为声明形式可能是一个好的想法。

int *a, *b;

i.e. 明确分类:*,注明实体名称,而不是名称。 (最后是个人偏好。)

因此,正如你在一份评论中要求的那样,用这种语言来设计。 如你所知,声明摘要中描述所申报实体类型的部分可出现在名称左侧(如<代码>*&)。 及其右侧(如(<>>>>>[])

int *f(), (&g)[5], h[2][2];

权利上的界限根本不可能以任何其他方式做到这一点。 他们别无选择,只能按实体名称分类,而不是按名称分类。 有人可能会进一步问,为什么在C++中,上述声明没有如上。

int *() f;
int (&)[5] g;
int [2][2] h;

(即所有类型的相关内容都出现在契约小组的左侧。) 这个问题的答案是,这是C++的。 这种办法从C继承,“声明必须类似于使用”常常被援引为理由。

P.S. 需要记住的另一件事(常常被错误地解释)是,与声明的类型名称相邻的限定语是共同的 类型的一部分,而不是第一批个人声明者的一部分。 例如

int const *a, *b;

声明const int *a and const int *b, not int *b, as some may mistakingly consider. 出于这一原因,我个人更愿意使用更符合逻辑的词语。

const int *a, *b;

定购(尽管当时我选择的是*>> ,名称而不是类型)。

This is just one of the many irregularities of C s declaration syntax. The type modifier * is part of the type, yet syntactically it belongs to the identifier that s declared.
The same is true for & and [], BTW.

https://stackoverflow.com/a/2667476/183120>。 *除修改外,还做了修改。

页: 1

int* number1, number2;

申报代码<>编号1,作为<代码>int的联络点和>编号<2>/code>,作为。 个人方面,我也更喜欢把星号加在这样的类型上,因为你在这个问题上 go了,因此我要宣布两点如下:

int* number1;
int* number2;




相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?