【发布时间】:2020-02-16 11:25:48
【问题描述】:
我一直在阅读 C11 6.5.3.2 p3
一元 & 运算符产生其操作数的地址。如果操作数的类型为“type”,则结果为 键入“类型指针”。如果操作数是一元 * 运算符的结果,则该运算符和 对 & 运算符求值,结果就好像两者都被省略了,除了对 运算符仍然适用,结果不是左值。同样,如果操作数是 [] 的结果 运算符,既不计算 & 运算符,也不计算 [] 所隐含的一元 * 并且结果 就好像删除了 & 运算符并将 [] 运算符更改为 a+ 运算符。否则, 结果是指向其操作数指定的对象或函数的指针。
虽然反复阅读,但我无法理解这一段的大部分内容。
我的问题部分是* that is implied by the []、[]operator were changed to a + operator、function designated by this operand。这一段是在讲&,但是为什么在说[]之后会出现*和术语“指定的功能”。而[] operator were changed to a + operator 似乎试图说出数组的定义:E1[E2] = *((E1) + (E2)) 这些行是什么意思?我需要一些帮助。
【问题讨论】:
-
对于任何指针数组
a和索引i,表达式a[i]正好等于*(a + i)。 -
这是否回答了您的问题stackoverflow.com/questions/53656118/…?
-
否则(如果一元
&未与*或[]组合),则结果(一元y)是指向对象 (&object) 的指针或由其操作数(object或function)指定的函数 (&function)。清除吗? -
@PSkocik 好的,
Otherwise, the result is a pointer to the object or function designated by its operand.现在很清楚了。但是我之前的句子还是有问题 -
@TarekD:不是重复的。这是关于特定点的语言律师问题。这是一个关于新阅读 C 标准级别的不那么迂腐的问题。
标签: c