C++中关于指针函数的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:51:39
#include <iostream>

using namespace std;

int *max(int *,const int);

int main()
{
const int size = 9;
int a[size] = {3,2,1,4,9,7,6,5,8};
for (int i = 0;i < size;i++)
cout << "a[" << i << "] = " << a[i] << "\tAddress is: " << &a[i] << endl;

cout << "\nThe max unmber is: " << *max(a,size) << "\tThe unmber address is: " << max(a,size) << endl;

return 0;
}

int *max(int *a,const int b)
{
int *m = a;
for (int i = 0;i < b;i++)
if (a[i] > *m)
*m = a[i];
return m;
}
这段代码中的指针函数可以选出数组中的最大值,但是返回的地址为什么总是数组首元素的地址呀?它跟最大值的地址并不匹配呀?请前辈们指点一下(请尽可能少的改动上面的代码),谢谢!

只用改动一处:
int *max(int *a,const int b)
{
int *m = a;
for (int i = 0;i < b;i++)
if (a[i] > *m)
m = &a[i];//这里直接对m(地址)赋值,若对*m赋值,则只是改变原地址的内容,而非地址本身。
return m;
}