int *maxcharate(int *a)
{
int *max, *q;
for (max = a, q = a; q<a+10; q++)
if (*max < *q)
max = q;
return max;
}
这里的*a=a[10];
q<a+10这里是将地址进行的比较吗?我要找这a【10】里面最大的数还可以用什么比较方法(指针)
q<a+10这里是将地址进行的比较吗?是
指针就是你的写法,还可以不用指针,用值
int maxcharate(int *a)
{
int max;
int *q;
for (max = a, q = a; q<a+10; q++)
if (max < *q)
max = *q;
return max;
}
先说下
*a = a[10]; // maxcharate(a) 并不代表*a = a[10]
在传值的时候传入的的a的指针,即表示a指向的第一个元素的地址(a[0]),也可以这样写
maxcharate(&a[0]);
q < a + 10 是和地址比较,这里的q指向的是a的第一个元素所在的地址,a + 10 表示的是a最后一个地址之后的位置
第二个问题找最大的元素
如果数组是顺序排列的,那么最后一个肯定是最大的,所以先排序在取最后一个
你那个最后返回了局部变量的指针,确定这样不会出问题?