【发布时间】:2020-07-09 08:42:10
【问题描述】:
#include<stdio.h>
void minmax(int,int,int*,int*);
int main()
{
int a[]={186,35,132,745,2345,23,154,36,24,2,55,26,346,2456,224,257,244,2784,032,234,2134};
int len,min,max;
len=sizeof(a)/sizeof(a[0]);
minmax(a,len,&min,&max);
printf("Largest: %d and Smallest: %d ",max,min);
return 0;
}
void minmax(int arr[],int len,int *min, int *max)
{
*min=*max=arr[0];
int i;
for(i=1;i<len;i++)
{
if(arr[i]>*max)
{
*max=arr[i];
}
if(arr[i]<*min)
{
*min=arr[i];
}
}
}
在编写此代码时,我收到以下错误
*..\src\Test6.c:在函数'main'中:
..\src\Test6.c:8:2: 警告:传递 'minmax' 的参数 1 会在没有强制转换的情况下从指针生成整数
..\src\Test6.c:2:6:注意:预期为“int”,但参数的类型为“int ”
..\src\Test6.c:在顶层:
..\src\Test6.c:12:6:错误:“minmax”的类型冲突
..\src\Test6.c:2:6: 注意:'minmax' 的先前声明在这里
但是当我最初通过声明和定义函数来更改整个代码时,一切都很顺利。
#include<stdio.h>
void minmax(int arr[],int len,int *min, int *max)
{
*min=*max=arr[0];
int i;
for(i=1;i<len;i++)
{
if(arr[i]>*max)
{
*max=arr[i];
}
if(arr[i]<*min)
{
*min=arr[i];
}
}
}
int main()
{
int a[]={186,35,132,745,2345,23,154,36,24,2,55,26,346,2456,224,257,244,2784,032,234,2134};
int len,min,max;
len=sizeof(a)/sizeof(a[0]);
minmax(a,len,&min,&max);
printf("Largest: %d and Smallest: %d ",max,min);
return 0;
}
请帮助我理解我遗漏的概念或错误...
【问题讨论】:
-
C 中以
0开头的整数常量是八进制格式,所以032给出的十进制数是26。这是故意的吗? -
错误说明了所有原因,对吗?它是一种不言自明的权利?
标签: arrays c function pointers