【问题标题】:how to pass 2D arrays through a function without using pointers in C如何在不使用 C 中的指针的情况下通过函数传递 2D 数组
【发布时间】:2014-05-15 14:46:40
【问题描述】:

在我的程序中,我想通过一个函数传递一个预先初始化的二维数组。我正确获得了第一个元素,但其余元素在传递时被初始化为 0。我不明白为什么会出现这个问题。我不想使用指针来传递数组。请告诉我是否可以在不使用指针的情况下传递我的二维数组。 这是代码 -

#include<stdio.h>
#define MAX(a,b) (a>b)?a:b

int kat(int S,int A[][S])
{
  int i,j,r[S];
  r[0] = A[0][0];
  j = 0;
  for(i=1;i<S;i++)
  {
     r[i] = MAX(r[i-1] + A[i][j],r[i-1] + A[i][j+1]);
     if (r[i-1] + A[i][j] < r[i-1] + A[i][j+1])
     j = j+1;
  }
  return r[S-1];
}

int main()
{
  int A[100][100],T,S,i,j,k,ans;
  scanf("%d",&T);
  while(T--)
  {
     i=0;
     scanf("%d",&S);
     for(k=1;k<=S;k++)
     {
       for(i;i<k;i++)
       {
         for(j=0;j<=i;j++)
         {
           scanf("%d",&A[i][j]);
         }
       }
     }
     ans = kat(S,A);
     printf("%d\n",ans);
  }
}

【问题讨论】:

    标签: c arrays function pointers 2d


    【解决方案1】:

    问题是你在对编译器撒谎:你告诉它你要传递给kat的数组是int[][S],其中S是一个变量,但实际上你是在传递它一个数组int[][100],其中100 是一个常量。

    您可以通过在main 中声明读取S 的数组 来解决此问题,如下所示:

    scanf("%d",&S);
    int A[S][S];
    

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 2021-02-24
      • 2012-10-09
      • 2010-11-19
      • 2014-12-21
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      相关资源
      最近更新 更多