可能重复:
函数参数中的数组长度
嗨,我正在做作业,我完全难过.我们假设让列表的每个顺序都是一个整数数组,所以我根据老师的伪代码编写了这段代码:
void permute(int v[], int curr,char letters[])
{
if(curr >= sizeof(v)/sizeof(int))
{
checkit(v,letters);
}
for(int i = curr; i < sizeof(v)/sizeof(int); i++)
{
swap(i,curr,v);
permute(v,curr + 1,letters);
swap(v[curr],v[i]);
}//for
}//permu
Run Code Online (Sandbox Code Playgroud)
我唯一不确定的是,是否sizeof(v)/sizeof(int)是正确的方法.
sizeof(v)/sizeof(int)不是要走的路.你的功能完全等同于:
void permute(int *v, int curr, char *letters)
{
...
}
Run Code Online (Sandbox Code Playgroud)
即v不是一个真正的数组,它是一个指针.您无法在C或C++中传递数组.
解决方案是以下之一(并非详尽无遗):
std::vector),您可以调用size()它我的一个烦恼是:你可以让C++为你推断数组大小
template <size_t N>
void permute(int (&v)[N], int curr,char letters[])
{
if(curr >= N)
{
checkit(v,letters);
}
for(int i = curr; i < N; i++)
{
swap(i,curr,v);
permute(v,curr + 1,letters);
swap(v[curr],v[i]);
}//for
}//permu
Run Code Online (Sandbox Code Playgroud)