c-为什么指针类型的表示法以星号开头



向函数传递指针时,我经常会有一秒钟感到困惑。如果我们创建一个整数值变量,如var a int(在Go中为0(来获取其地址(指向它的指针(,我们将使用符号pA := &a。要获得指针后面的值,我们使用星号符号:b := *pA。有道理,没问题。但是,为什么该语言的创建者(不仅仅是Go(选择指针类型的表示法为*int而不是&int(即func test(i *int) {}接受整数的地址作为参数(。*用于获取值,&用于获取地址。*int读起来像一个(的(int的值,&int(在语言中并不真正存在(读起来像

int这是一个关于指针类型表示法背后的历史的问题,为什么它是星号而不是"与",它背后的逻辑是什么?

来自DMR的C语言开发:

对于这种组合类型的每个对象,已经有一种方法可以提到底层对象:对数组进行索引,调用函数,在指针上使用间接运算符。类比推理导致名称的声明语法与名称通常出现的表达式语法相呼应。因此,

<blockquote\
int i, *pi, **ppi;
>

相关内容