如何解决C ++传递对象数组,后跟一个整数
我希望这将成为一个简单的问题。我正在看一些C ++代码,它将结构数组传递给方法,例如:
dosomething(arrayOfStructs + n);
该数组初始化为256个项目,在调用example方法之前,它执行一些工作,以一些项目填充该数组。在这种情况下,变量n
表示数组中当前的项数。
我不知道n
变量对被调用的方法有何作用,甚至可能对数组本身也不起作用。我唯一能想到的是数组后面的数字以某种方式重置了数组大小。我可能完全不喜欢那个。
我正在尝试遵循C ++代码并尝试在JavaScript中进行类似的操作。我陷入了数组后面的n
变量中。
解决方法
我认为n
具有整数类型。
在用作此调用参数的表达式中
dosomething(arrayOfStructs + n);
数组指示符arrayOfStructs
被隐式转换为指向其第一个元素的指针。将指向数组第一个元素的指针加整数n
会移到数组的n + 1个元素(如果要对从1开始的元素进行计数)。这称为指针算法。
您可以将这个呼叫视为
dosomething( &arrayOfStructs[n]);
为使内容更清楚,请考虑使用此简单的演示程序。
#include <iostream>
void display( const int *p )
{
std::cout << *p << ' ';
}
int main()
{
int a[] = { 1,2,3 };
const size_t N = sizeof( a ) / sizeof( *a );
for ( size_t i = 0; i < N; i++ )
{
display( a + i );
}
std::cout << '\n';
for ( size_t i = 0; i < N; i++ )
{
display( &a[i] );
}
std::cout << '\n';
return 0;
}
其输出为
1 2 3
1 2 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。