如何使用C中的数组解决此问题?

时间:2019-01-19 10:32:50

标签: c arrays

我正在将数组传递给一个函数,该函数的大小由用户自己确定。

  #include<stdio.h>
void mapper(int a[], int size);
int main ()
{
    int n;
    printf("Please provide the number of inputs\n");
    scanf("%d",&n);
    int array[n];
    for(int i=0; i<n;i++)
    {
        scanf("%d",&array[i]);
    }
    mapper(array,n);
    return 0;

}
void mapper (int a[], int size)
{
  for (int i=0; i<size;i++)
  {
    for(int j=0; j<sizeof(a[i]);j++)
    {
        printf("#");
    }
    printf("\n");
  }
}

运行此程序时,出现一个错误,称为有符号整数与无符号整数的比较。为什么会这样呢?是因为我已经传递了a []作为参数,后来又使用a [i]?

如何将数组作为参数传递给要确定其大小的函数?

1 个答案:

答案 0 :(得分:1)

  

运行此程序时,出现一个错误,称为有符号整数与无符号整数的比较。为什么会这样?

您收到该错误的原因是

for(int j=0; j<sizeof(a[i]);j++)

sizeof产生类型size_t的值,该值是无符号类型,您将其与int进行比较。