永发信息网

一个C++问题高手请进!

答案:5  悬赏:70  手机版
解决时间 2021-05-10 16:54
#include "iostream.h"
int *findmax(int *array,int size,int *index);
void main(void){
   int a[]={33,91,54,67,82,37,85,63,19,68}, *maxaddr, 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); //array[0];
  for (i=1;i<size;i++)
    if (max<*(array+i))  {
       max=*(array+i);
      *index=i; 
    }
  return(array+*index);
}
    当中maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);的sizeof(*a)是什么意思?是指向a数组的首元素的大小的意思吗?
   还请问大家在这个例子中使用函数指针有什么优点。为什么要使用到指针
最佳答案

sizeof(a)是整个数组占用的字节总长度,这里应该是40字节


sizeof(*a)是数组第一个元素的字节长度,这里int是4字节


sizeof(a)/sizeof(*a)就是求数组的元素的个数,这里40/4=10


   你声明了一个类对象的指针,你要访问它的成员,必然要用到指针的了


  好处麽     某 些情况下,比如函数的形参,明显传递一个指针比传递一个对象要高效


 同一函数指针变量可以保存不同的函数名,即可以实现不同函数的调用,这实际上是"多态"的内容;
通过函数指针可以很好地完成"菜单"程序设计技术,MFC中的消息就是靠"函数指针"来实现调用的
函数指针可以作为形式参数,实现在一个函数中用通过函数指针调用其它函数的目的.
总之,"函数指针"属于C语言的高级编程专题.


那个  希望能帮到你

全部回答

     maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);的sizeof(*a)是a数组的首元素的大小的

  sizeof(a)/sizeof(*a)就是求数组a的元素个数

这个例子中并没有使用函数指针,而是用的是返回指针值的函数,好处是在检索数组中的一个值容易 方便

maxaddr=findmax(a,sizeof(a)/sizeof(*a),&idx);的sizeof(*a)是什么意思

sizeof(*a)意思是  得到指针a指向的数据所占据的内存大小

maxaddr是取得a数组中最大的那个数的地址。。。。。
求 数据 a的大小
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
狂战PK兼刷图 到底拿什么武器好 高手来!!!
诺机亚N70 2010手机QQ登不上到了页面自己往回
动感地带怎么查询我设置的M群好友都是谁
昨晚梦到挖藕
终极三国出到几集了?
QQ飞车要怎样才能到专业频道?
什么是文件上传中的I/Q错误
K243到信阳时间
我现在冲会员聊天记录还能找得回来吗?QQ重装
Restore my immune, universal love people o
为什么手机上不了java:
让我帮助你学习英语怎么讲?3Q
求个最狂的网络音乐做空间背景音乐?地址发来
PF和PG技巧
有没有那种可以在家连机一起玩的游戏啊~
推荐资讯
咖啡斗的吃法
斧头为什么轻砍一下砍不死人啊
问问积分怎么兑换Q币?多少积分等于1Q币?
如果2个台风相遇,结果怎么样?
谁是华北二10级公会会长
为什么黑洞可以把光吸引难道黑洞中有比光还快
行政诉讼需要什么?
法院担保金的作用?何时能退?
梦幻西游什么样的区好赚钱
人比较矮脸瘦长头发长的该怎样留流海
我想辞职,怎么和老板讲?份工是同学介绍的,
欸什么意思,知责任,明责任,负责任什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?