这个符号在c ++中意味着什么

时间:2011-05-02 06:02:29

标签: c++ arrays syntax

所以我有:

char inBuf[80]

然后还有另一行

inBuf+9

当我将+9添加到数组的名称时,这是什么意思?

8 个答案:

答案 0 :(得分:5)

与引用元素号9(基于0)相同。

等效符号为:

&inBuf[9]

如果您想获取该值,可以使用*(inBuf+9)

答案 1 :(得分:2)

这将指向数组的第10个元素。例如:

*(inBuf + 9) = 10

将10分配给第10个元素。

答案 2 :(得分:1)

已经给出了答案。我可能只是在重复它。

这称为指针算术,因为指针涉及算术运算。只有你可以用指针做某些事情。你可以添加一个整数,但只有当指针指向内存中的某个数组时才可以减去整数。你也不能减去指针,因为这可能会导致一些关键的内存位置(对于操作系统)。

指针运算中的加法是特殊的,它处理数组元素的数据类型,所以当你说

char inBuf[80]
inBuf + 9

它提前9个内存位置足以容纳9个字符(通常为9 * 1个字节)

int inBuf[80]
inBuf + 9

这将增加9个足以容纳9个整数的内存位置(通常为9 * 4个字节)。

数组和指针并不总是相同的,请参阅“专家C编程”,也不要使用指针算法多态,请参考“scott meyers book”

答案 3 :(得分:0)

inBuf就像写& inBuf [0]。 所以inBuf +9表示inBuf的地址加上9个字符长度(& inBuf [9])。

答案 4 :(得分:0)

使用inBuf而不使用限定符来使用数组索引将与查看char * inBuf相同。 inBuf + 9与inBuf [9]相同。

答案 5 :(得分:0)

inBuf + 9表示将inBuf的地址增加9。

答案 6 :(得分:0)

inBuf引用基地址。但是inBuf + 9找到了基地址的第10个元素。

   *(inBuf + 9) = 34;

这会将值34分配给inBuf数组中的第10个元素。

答案 7 :(得分:0)

使用它执行加法时,数组标识符(例如inBuf)会衰减到指向数组中第一个元素的指针,并且添加的数字乘以数组元素的大小(在这种情况下) char,其大小为1)以生成新地址。

因此,inBuf + 9是数组中第10个元素的地址,也可以表示为&inBuf[9]。您可以像以下一样使用它:

*(inBuf + 9) = '\0';   // overwrite the 10th element in inBuf with a NUL
const char* p = strchr(inBuf + 9, ' ');  // find space at or beyond 10th char