语法
*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指向的整数,你应该在它前面加一个星号.