C++程序设计学习笔记:1 从C走进C++ 函数指针

1 函数指针

通过函数指针,可以调用其指向的函数。例如:

#include <stdio.h>

void print_min(int a, int b)
{
    if (a < b)
        printf("%d\n", a);
    else
        printf("%d\n", b);
}

int main()
{
    void (*fp)(int, int) = print_min;
    fp(4, 5);
    return 0;
}
$ gcc a.c && ./a.out
4

函数指针的定义:

返回类型 (*函数指针名)(参数类型1,参数类型2,...);

函数指针的使用方法:

函数指针名(实参表);

再看一个函数指针的例子:C语言快速排序库函数

void qsort (void * base, int nelem, unsigned int width, int (* pf_compare)(const void *, const void *));

base:数组起始地址。
nelem:数组中元素的个数。
width:每个数组元素的大小 (由此可以计算出每个元素的地址)。
pf_compare:比较函数,决定元素先后顺序。
* 如果第一个应该排在前面,返回负整数。
* 如果都可以,返回0。
* 如果第一个应该排在后面,返回正整数。

排序,就是不断比较并交换位置的过程。

练习:按照从小到大的顺序,排列一个整形数组。

#include <stdio.h>
#include <stdlib.h>

int array[] = { 100, 90, 80, 70, 60, 10, 20, 30, 40, 50 };

int compare (const void * a, const void * b)
{
   return (*(int *)a - *(int *)b);
}

int main()
{
    int nelem = sizeof(array) / sizeof(int);
    qsort((void *)array, nelem, sizeof(int), compare);

    for (int i = 0; i < nelem; i++)
        printf("%d ", array[i]);
    printf("\n");
}
# gcc a.c && ./a.out
10 20 30 40 50 60 70 80 90 100

课程录像

北京大学郭炜/刘家瑛老师,C++程序设计课程录像

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,585评论 3 44
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,934评论 1 19
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,618评论 1 51
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 3,470评论 0 6
  • 常用命令 $ rm -r directoryName删除文件夹$ rm fineName 删除...
    NapoleonY阅读 152评论 0 1

友情链接更多精彩内容