我正在将数组传递给一个函数,该函数的大小由用户自己确定。
#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]?
如何将数组作为参数传递给要确定其大小的函数?
答案 0 :(得分:1)
运行此程序时,出现一个错误,称为有符号整数与无符号整数的比较。为什么会这样?
您收到该错误的原因是
for(int j=0; j<sizeof(a[i]);j++)
sizeof
产生类型size_t
的值,该值是无符号类型,您将其与int
进行比较。