我注意到在C ++中,可以使用两种不同类型的缩进来声明指针(如果这是我正在寻找的正确单词):
//Space followed by asterisk with variable name
char *pointer;
//Asterisk followed by space and then variable name
char* pointer;
星号的位置会影响指针的任何内容吗?如果是这样,在什么情况下我需要使用一种类型的缩进而不是另一种?
答案 0 :(得分:9)
没有whitespacing对指针声明没有任何影响,但是C / C ++语法中有一个错误(好吧,正式是它的一个特性,但我不知道有谁喜欢这个行为),这个声明
char* pointer, pointer2;
pointer
的{{1}}类型char*
和pointer2
类型char
。因此,很多人喜欢把它写成
char *pointer, *pointer2;
char *pointer, not_pointer;
更清楚,“指针”是名称的一部分,而不是类型。
答案 1 :(得分:3)
不,星号位置对指针的声明没有影响。
答案 2 :(得分:3)
只要星号位于类型后面和变量名称之前,间距就没有效果:
char *pointer;
与:
相同char * pointer;
答案 3 :(得分:0)
在像指针这样的复合类型中,asterix(类型修改)是声明符的一部分。实际上,声明是由以下形成的:。
int i = 1, *pi = &i;
^^^ ^^^^^^^^^^^^^^^ -- list of declarators
`- base type
在上面我是一个int,它是一个指针
在:
int* p1, p2; // p1 is a pointer, while p2 is an int
int *p1, p2; // same as above