有关二维数组
void show(int R[][],int n)
{
int k=1;
int i,j,l,t,s,q,m;
if(n%2==0)
int m=n/2;
else
m=n/2+1;
for(i=0;i<m;i++)
{
for(j=i;j<n-i;j++)
R[i][j]=k++;
for(t=i+1,j=j-1;t<n-i;t++)
R[t][j]=k++;
for(l=n-i-1,t=t-2;t>=i;t--)
R[l][t]=k++;
for(s=i,q=l-1;q>i;q--)
R[q][s]=k++;
}
}
int main()
{
int i,j;
int n=5;
int R[5][5]={0};
show(R,5);
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
cout<<R[i][j]<<" ";
}
cout<<endl;
}
}
报错:error C2664: 'show' : cannot convert parameter 1 from 'int [5][5]' to 'int [][1]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
当我把形参改为R[][5]的时候,就可以了,我知道应该是我对二维数组的传参了解有了问题,请各位指教
[解决办法]
就酱紫,二维数组的传参有问题,类型都不匹配,当然出错了
[解决办法]
二维数组作为参数传递的时候会严格要求你把第二维度给确定了。不然的话编译器不知道该数组到底该怎么区分。如果你想不传递维度的话建议传递二维指针过去。
[解决办法]
用二维指针吧
[解决办法]
有指针传吧。。不过要注意数组各维的长度,小心越界。。。
[解决办法]
建议将形参改为二级指针,
因为R[][],必须对其指定第二维的长度,要不然无法识别!
因为二维数组的数组名实际是个数组指针!
你可以看看这个内容:
http://blog.sina.com.cn/s/blog_6b1695860100q84k.html
[解决办法]
哦,忘记了,
形参应该设计为(*R)[4]