【发布时间】:2017-07-23 10:07:25
【问题描述】:
与 C++ 不同,C 不能返回引用。这是否意味着如果您访问A[i],它将在评估表达式时复制元素?
例如,如果A 是一个由 10 个ints 组成的数组,那么A[5]+=1; 是否只增加在评估A[5] 时构建的临时副本,这与 C++ 的向量不同,它会增加实际的第六个元素本身?
【问题讨论】:
-
A[5]直接取消引用数组元素,不涉及临时副本。 -
A[5] += 1递增数组A的第一个从零开始的元素。如果它不这样做,则编译器有一个错误。不清楚你在问什么。 -
A[5]+=1与A[5] = A[5] + 1相同,优化编译器将尽可能少地复制,如果有的话,机器语言可以表达。 -
确保您了解
a = 3;不读取a... 数组成员访问没有什么不同