#include<iostream>using namespace std;int *findmax(int *array,int size,int *index);void main(){int a[]={33,23,78,99,54,45,76,12,90};int *maxaddr;int idx;maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);cout<<"the index of maximum element is"<<idx<<endl;cout<<"the address of is"<<maxaddr<<endl;cout<<"the valve of is"<<a[idx]<<endl;}
1 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
int *findmax(int *array,int size,int *index) {
if (size <= 0) return NULL;
int max = array[0];
*index = 0;
for (int i = 1; i < size; i++) {
if (array[i] > max) { // 如果大小相同的返回第一个则这么写,若返回最后一个则用>=
*index = i;
max = array[i];
}
}
return &array[*index];
}
这个函数不应该这样定义,应该用返回值返回下标,不用返回指针,根据下标就能得到数组的元素了。既返回指针又返回下标相当于返回了多余的东西。函数设计的要紧凑不要做无谓的事情。
- 1 回答
- 0 关注
- 301 浏览
添加回答
举报
0/150
提交
取消