*p和p*之间有什么区别?

mr_*_*air 2 c pointers

p*另一种使用指针的方法吗?

*p,指针变量,不同于p*

Ave*_*y3R 9

*p取消引用指针,p*将指针乘以某个东西.


tem*_*def 8

语法

*ptr
Run Code Online (Sandbox Code Playgroud)

意味着取消引用指针以获取它指向的对象.

语法

ptr*
Run Code Online (Sandbox Code Playgroud)

在C中没有意义,除非它是乘法的开始.例如:

*ptr*137;
Run Code Online (Sandbox Code Playgroud)

表示"取消引用ptr,然后将它指向的值乘以137".但是,在这种情况之外,在指针变量之后放置一个星是非法的.

现在,合法的是把一个明星放在一个类型之后,如同

int*
Run Code Online (Sandbox Code Playgroud)

其中描述的类型是指向星形左侧类型的指针.有趣的是,这意味着您不能在类型(不合法)之前放置星形,也不能在指针之后放置星形(因为取消引用运算符向左移动).原因部分是由于在C中,类型应该模仿它们的工作方式.也就是说,如果你有

int *p;
Run Code Online (Sandbox Code Playgroud)

然后语法是一个视觉提示,要获得p指向的整数,你应该在它前面加一个星号.