为什么无法输出最大最小值?求指教!
#include <stdio.h>void max_min(int a[],int length,int *max,int *min);
int main(void)
{
int max,min;
int a[] = {1,2,3,4,5,6,7,8,9,10,25};
max_min(a,sizeof(a),&max,&min);
printf("max = %d,min = %d\n",max,min);
return 0;
}
void max_min(int a[],int length,int *max,int *min)
{
int i;
*max = *min =a;
for(i = 0;i < length;i++)
{
if(a < *min)
{
*min = a;
}
if(a > *max)
{
*max = a;
}
}
} 总结:原理就是利用sizeof(),先求取数组元素所占的总的字节长度,再求出一个首元素所占的字节长度(即元素类型的长度),相除即可得到数组的长度。 本帖最后由 jackz007 于 2019-11-7 15:47 编辑
这一句
max_min(a,sizeof(a),&max,&min);
改成这样
max_min(a,sizeof(a)/sizeof(int),&max,&min); jackz007 发表于 2019-11-7 15:46
这一句
max_min(a,sizeof(a),&max,&min);
改成这样
11的话,那就对了
54黑科技 发表于 2019-11-7 15:46
11的话,那就对了
sizeof(a) 肯定不对,因为它返回的是数组占用的总字节数 44,而每个int 占用了 4 个字节,所以,应该这么写:
sizeof(a) / sizeof(int) 谢谢您!
页:
[1]