星号的位置是否会影响指针

Does the position of an asterisk affect pointers?

本文关键字:影响 指针 是否 位置      更新时间:2023-10-16

我注意到,在C++中,可以使用两种不同类型的缩进来声明指针(如果这是我正在寻找的正确词(:

//Space followed by asterisk with variable name
char *pointer;
//Asterisk followed by space and then variable name
char* pointer;

星号的位置是否会影响指针的任何内容?如果是这样,在什么情况下我需要使用一种类型的缩进而不是另一种缩进?

不,白间距对指针声明没有任何影响,但是 C/C++ 语法中存在一个错误(嗯,正式它是一个功能,但我不知道有谁喜欢这种行为(,其中这个声明

char* pointer, pointer2;

pointer留下char*类型,pointer2 char类型。正因为如此,许多人更喜欢把它写成

char *pointer, *pointer2;
char *pointer, not_pointer;

为了更清楚起见,"指针"是名称的一部分,而不是类型。

否,星号位置对指针的声明没有影响。

只要星号在类型之后和变量名之前,间距就不起作用:

char *pointer;

与以下相同:

char      *             pointer;

在指针等复合类型中,asterix(类型修饰(是声明符的一部分。实际上声明由以下内容组成,即:

int i = 1, *pi = &i; 
^^^ ^^^^^^^^^^^^^^^ -- list of declarators 
 `- base type   

在上面我是一个整数,whie pi是一个指针

在:

int* p1, p2; // p1 is a pointer, while p2 is an int
int *p1, p2; // same as above