Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从c中的引用为2d数组赋值? intmax(intx,inty){ 如果(x>=y) 返回x; 其他的 返回y; } 内部计算(内部计算i、内部计算j、内部计算n、内部计算c){ int k,y,m; k=j; y=(n)/(2^i)*(2^j)); 对于(y=i;y>=0;y--){ 对于(k=j;k>=0;k--){ *(*(c+2)+k)=最大值(y,钙(i+1,k,n,c)+钙(i+2,k,n,c)+钙(i,k+1,n,c)); } 对于(y=0;y_C_Arrays_Pointers - Fatal编程技术网

如何从c中的引用为2d数组赋值? intmax(intx,inty){ 如果(x>=y) 返回x; 其他的 返回y; } 内部计算(内部计算i、内部计算j、内部计算n、内部计算c){ int k,y,m; k=j; y=(n)/(2^i)*(2^j)); 对于(y=i;y>=0;y--){ 对于(k=j;k>=0;k--){ *(*(c+2)+k)=最大值(y,钙(i+1,k,n,c)+钙(i+2,k,n,c)+钙(i,k+1,n,c)); } 对于(y=0;y

如何从c中的引用为2d数组赋值? intmax(intx,inty){ 如果(x>=y) 返回x; 其他的 返回y; } 内部计算(内部计算i、内部计算j、内部计算n、内部计算c){ int k,y,m; k=j; y=(n)/(2^i)*(2^j)); 对于(y=i;y>=0;y--){ 对于(k=j;k>=0;k--){ *(*(c+2)+k)=最大值(y,钙(i+1,k,n,c)+钙(i+2,k,n,c)+钙(i,k+1,n,c)); } 对于(y=0;y,c,arrays,pointers,C,Arrays,Pointers,您正在对一个星型指针执行两次解引用。您尝试将其视为数组数组,但传入的是一个衰减为指针的2D数组。2D数组是一个连续的内存块,可以通过算术寻址来计算所需的单元格。对于N x M矩阵,如果如果需要元素[w][x],可以执行arr[N*w+x]。或者使用现代C标准,可以将函数签名调整为如下所示,并正常访问数组: int max(int x,int y){ if(x>=y) return x; else return y; } int calci(int i,int

您正在对一个星型指针执行两次解引用。您尝试将其视为数组数组,但传入的是一个衰减为指针的2D数组。2D数组是一个连续的内存块,可以通过算术寻址来计算所需的单元格。对于N x M矩阵,如果如果需要元素[w][x],可以执行arr[N*w+x]。或者使用现代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 amount\n");
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);
}

c
不是2d数组。要将2d数组传递给函数,请至少使用
int**c
。然后使用
c[0]
指向第一个子数组。看起来您正在对一个星形指针进行两次解引用。我猜您将其视为数组数组而不是2D数组。这里没有2D数组。发布调用
calci()
的代码时,an更好。以arg
c
形式传入的是什么?请缩进!!
int calci(int i, int j, int n, c[i][j])