c语言中的指针p->a

入行十几年了,对p->a 这个符号只是熟悉,并没有真的理解。

看例子:

student *p;

p->name; // 可以用p->name取一个对象的属性,还是很跨越的。

这行代码的意思是:通过指针 p 所指向的那个 student 结构体,去访问它的 name 成员。

这里的 -> 叫做箭头操作符(或指向运算符)。它是 C 语言为了简化代码而提供的一种语法糖。p->name 在底层完全等价于 (*p).name。

c语言中,* -> . 这三个符号的含义:

* (星号)

这个符号根据它在代码中的位置不同,有几种不同的英文表达:

Asterisk

ˈæstərɪsk

(最正式的数学/符号名称)Star(程序员日常口语中最常用的说法)Dereference operator(当它用在指针前面取值时,比如 *p,它的专业术语叫“解引用操作符”)Pointer declarator(当它用在声明变量时,比如 int *p,表示这是一个指针)

口语举例:

️ -> (箭头)

这个符号长得就像个箭头,所以非常好记:

Arrow operator(最常用的叫法,“箭头操作符”)Structure pointer operator(教科书上偶尔会这么叫,“结构体指针操作符”)Member access via pointer(描述它的作用:“通过指针访问成员”)

口语举例:

. (点)

这个最简单,但在编程里有专门的术语:

Dot(最通俗的叫法,“点”)Dot operator(“点操作符”)Member access operator(它的专业术语,“成员访问操作符”)

口语举例:

总结一下

如果你在和外国同事结对编程(Pair Programming),你可以这样自然地表达: