简笔画美女图片大全:C++指针函数问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 08:05:59
#include "iostream.h"
int *findmax(int *array,int size,int *index);
void main()
{int a[10]={33,91,54,67,82,37,85,63,19,68};
int *maxaddr;
int idx;

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);

cout<<idx<<endl;
cout<<maxaddr<<endl;
cout<<a[idx]<<endl; }

int *findmax(int *array,int size,int *index) //本身要求返回一个整数

{ int max,i;

max=*(array+0);

for (i=1;i<size;i++)

if (max<*(array+i))

{
max=*(array+i);

*index=i;
}
return(array+*index); //返回地址指针
}

上面这个程序是对的。但我搞不懂的是为什么他的函数返回值和函数定义不一样。为什么还是可以通过编译。
请高手指教。
谢谢。

不知有没有高手愿意做我的师傅。本人刚刚开始学习c++
请高手说的详细些, 这个函数返回的类型和定义类型为什么不一样也行。

返回值和定义都没有问题(他们两个是一样的),

对于函数int *findmax(...),其返回值要求是指向int型的指针,

return(array+*index)是给指针array加了一个偏移量*index,然后返回的,所以他还是一个指针。

看看数组和指针的关系(异同点),你应该会有收获的。

return(array+*index); //返回地址指针

array本身就是一个地址,*index是一个整数,地址加一个整数表示将指针指向array后面(*index) 个变量大小的地址,这是指针的算术运算,可以看一下这部分

另外指针和数组的使用其实是基本相同的(有一些差别)
比如你定义一个整形指针
int *array;
你也可以用数据来访问
array[0];