c/c++语言开发共享如何在c中从引用中为二维数组赋值?

int max(int x,int y){ if(x>=y) return x; else return y; } int calci(int i,int j,int n,int *c){ int k,y,m; k=j; y = (n)/((2^i)*(2^j)); for(y=i;y>=0;y--){ for(k=j;k>=0;k--){ *(*(c+2)+k) = max(y,calci(i+1,k,n,c)+calci(i+2,k,n,c)+calci(i,k+1,n,c)); } for(y=0;y<=j+2;y++){ *(*(c+1)+y)=*(*(c+2)+y); *(*(c+0)+y)=*(*(c+1)+y); } } return *(*(c+2)+0); } int main(){ int i,j,n,z,x,y; printf("Enter the amountn"); scanf("%d",&n); x=log(n)/log(2); y=log(n)/log(3); int arr[3][y+3]; for(i=0;i<=2;i++) for(j=0;j<=y;j++) arr[i][j+2]=0; z = calci(x,y,n,arr); printf("n%d",z); } 

在这里我得到错误作为一元’*’的无效类型参数(有’int’)。 我实际上试图将max函数返回的值赋值为第2行和第k列的数组元素。

    您正在对一颗星指针执行两次解除引用。 你试图做的是把它当作一个数组数组,但你传入的是一个衰减到指针的二维数组。 2D数组是单个连续的内存块,可以通过算术进行寻址以计算所需的单元格。 对于N×M矩阵,如果你想要元素[w] [x],你可以做arr [N * w + x]。 或者使用现代C标准,您可以将函数签名调整为像这样并正常访问数组:

     int calci(int i, int j, int n, c[i][j]) 

      以上就是c/c++开发分享如何在c中从引用中为二维数组赋值?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519294.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐