C++ 加号运算符对数组做什么?
我在一个Arduino库中找到了这段代码C++ 加号运算符对数组做什么?,c++,C++,我在一个Arduino库中找到了这段代码 u8 buf[6]; Host2SCS(buf+0, buf+1, Position); Host2SCS(buf+2, buf+3, Time); Host2SCS(buf+4, buf+5, Speed); 加号运算符对数组的作用是什么?buf是一个指针(指向数组),在此上下文中,+运算符执行指针算术。例如: int A[] = {5, 1, 4, 8}; std::cout << A << std::endl; std::
u8 buf[6];
Host2SCS(buf+0, buf+1, Position);
Host2SCS(buf+2, buf+3, Time);
Host2SCS(buf+4, buf+5, Speed);
加号运算符对数组的作用是什么?
buf
是一个指针(指向数组),在此上下文中,+
运算符执行指针算术。例如:
int A[] = {5, 1, 4, 8};
std::cout << A << std::endl;
std::cout << A+3 << std::endl;
output:
0x7d972ee131c0
0x7d972ee131cc
inta[]={5,1,4,8};
std::cout在表达式中,buf+1
,其中buf
是一个数组
buf
隐式转换为等于&buf[0]
(buf
的第一个元素的地址)的指针。这是一种标准转换,称为(毫不奇怪的)“数组到指针转换”或“衰减到指针”
buf+1
的结果相当于&buf[1]
u8 buf[6];
Host2SCS(&buf[0], &buf[1], Position);
Host2SCS(&buf[2], &buf[3], Time);
Host2SCS(&buf[4], &buf[5], Speed);
哪种形式“更好”是一个风格上的问题——从技术上讲,它们是等价的。数组名在用作指针时衰减为指向其第一个元素的指针。