标题:这个帮忙讲解一下下
只看楼主
於晓琪123
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2014-11-4
结帖率:71.43%
已结贴  问题点数:20 回复次数:1 
这个帮忙讲解一下下
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
bool BigThan(int x,int y)
{
    return x>y;
}
void Sort(int *start ,int*end,bool(*fname)(int ,int));
int main()
{
    int a[10];
    int i;
    for(i=0;i<10;i++)
    {    a[i]=rand();
    cout<<a[i]<<" ";
    }
    cout<<endl;
    Sort(a,a+10,BigThan);
    for(i=0;i<10;i++)
        cout<<a[i]<<" ";
    cout<<endl;
     return 0;
}
void Sort(int*start,int*end,bool(*fname)(int,int))
{
    int*p,*q;
    for(q=start;q<end-1;q++)
    {
        if(fname(*(q+1),*q))
            swap(*q,*(q+1));
    }
}
第一 boolBigThan 为什么要返回想x>y 第二*fname 怎么解释为什么会跟bigthan 联系在一起啊
搜索更多相关主题的帖子: include return start 
2014-11-13 22:22
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:20 
BigThan返回值是一个bool,所以当x大于y的时候返回真,否则假

第二参数原型bool (*fname)(int,int),该参数是一个函数指针,可以指向任何返回值是bool并且带两个整形参数的指针。
本方法出自早期C程序,知道的时候是在做强制性C符号导出dll引用,就是说我有个dll,但没有该dll的函数声明,接口是在软件下查到导出符号,只有一个dll程序但要用里面的功能,大概意思就是这样,然后就使用该方法强制指向函数口。
不过这样有个致命的缺点,就是很像goto,很容易引起奔溃

考虑以下程序
程序代码:
#include <iostream>
using namespace std;
bool youtest(void)
{
    cout<<"这是一个测试";
    return 1;
}
bool (*mytest)(void)=youtest;//mytest指向youtest
int main()
{
    mytest();//指针指向youtest地址,当使用mytest的时候会转到youtest内存
    cin.get();
    return 0;
}

2014-11-14 12:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-438552-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017556 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved