C ++中的指针和引用变量语法顺序

时间:2013-12-10 12:03:11

标签: c++ pointers syntax reference

我一直在研究C ++,我开始怀疑你何时声明指针或引用(和常量):

int *a; 
int* a; 
char &b; 
char& b; 
const char c; 
char const c;

a, bc的两个声明是否相同?他们被允许吗?

Thnx任何帮助! :)

3 个答案:

答案 0 :(得分:4)

是的,它们是完全相同的。

一般规则是,如果类型名称旁边有const,则类型是常量。如果它在指针旁边那么它就是指针是恒定的。如果它在两者旁边那么它会绑定到类型。所以:

char const a; // constant character
char const *b; // non constant pointer to constant data
char * const c; // constant pointer to non constant data
char const * const d; constant pointer to constant data

默认情况下,引用是常量,因为它们在初始化后无法更改为引用任何其他内容。使用上述规则意味着当const应用于引用时,意味着类型/数据是不变的。

答案 1 :(得分:2)

“是”是您的两个问题的答案。 :d 你老实说得对了!

答案 2 :(得分:1)

是的,嘿是相同的,虽然引用和指针,以及它们的const是不一样的。

就像一个风格问题,我试图保持“&”和变量“*”。许多程序员都习惯在同一行上声明具有相同类型的多个变量的习惯(其他帖子的辩论主题是好还是坏)。

例如:

// Creates three pointers to FruitClass instances.
FruitClass *apple, *lemon, *grapes;  

如果你养成了放“&”的习惯或者类型为“*”,您可能会输入:

// Creates a pointer to a FruitClass instance and two FruitClass instances.
// This is probably **not** what you wanted to do.
// And if it is, put these on separate lines because everybody will ask 
// if you intended to do this and waste your/their time.
FruitClass* apple, lemon, grapes;  

这些非常不同的东西。

这是一个小问题,如果你以第二种方式而不是第一种方式进行,宇宙将不会自毁。只要注意编译器何时开始吠叫(当你尝试将它用作引用/指针时它将会发生咆哮而它不是)。

它也是我合作过的编码标准的一部分。如果您使用标准,请务必遵循它,避免在代码检查期间浪费时间和挫折(因为如果您有标准,某人将正式或非正式地检查代码)。 / p>