这个符号在c++中是什么意思?
what does this notation mean in c++
所以我有:
char inBuf[80]
然后是另一行
inBuf+9
当我把+9加到数组名上意味着什么?
与引用第9号元素(从0开始)相同。
一个等价的符号是:
&inBuf[9]
如果您想获得该值,您可以使用*(inBuf+9)
指向数组的第10个元素。例如:
*(inBuf + 9) = 10
将第10个元素赋值为10
答案已经给出了。我可能只是在重复。
这被称为指针算术,是因为算术操作涉及指针。有些事情只能用指针来做。
就像你可以给它加一个整数,但只有当指针指向内存中的某个数组时,你才能减去一个整数。
你也不能减去指针,因为这可能会导致一些关键的内存位置(对于操作系统)。
加法在指针算术中的特殊之处在于它照顾到数组元素的数据类型,所以当你说
char inBuf[80]
inBuf + 9
它会移动足够容纳9个字符(通常是9*1字节)的内存位置
int inBuf[80]
inBuf + 9
这将增加足够容纳9个整数(通常为9*4字节)的内存位置。
数组和指针并不总是相同的,关于
,请参阅《C编程专家》。此外,永远不要多态地使用指针算术,请参阅《scott meyers的书》,了解
使用没有限定符的inBuf来使用数组索引将与看到char *inBuf相同。inBuf + 9将与inBuf[9]相同。
inBuf+9表示inBuf的地址增加9。
inBuf引用基地址。但是inBuf+ 9定位基数地址的第10个元素。
*(inBuf + 9) = 34;
将值34赋值给inBuf数组的第10个元素
当您使用它执行加法时,数组标识符(例如您的inBuf
)衰减为指向数组中第一个元素的指针,并且添加的数字乘以数组元素的大小(在本例中为char,其大小为1)以产生新地址。
则inBuf + 9
为数组中第10个元素的地址,也可以表示为&inBuf[9]
。你可以这样使用:
*(inBuf + 9) = ' '; // overwrite the 10th element in inBuf with a NUL
const char* p = strchr(inBuf + 9, ' '); // find space at or beyond 10th char
inBuf类似于&inBuf[0]。所以inBuf +9表示inBuf的地址加上9个字符的长度(&inBuf[9])
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思