C语言:再探C语言指针

        若对指针的理解还有问题的或不懂得地方,可通过此链接:https://blog.csdn.net/FSRMWK/article/details/136494868?spm=1001.2014.3001.5501,进行复习与补充

        在上期我们从指针的基础概念出发,再到对常见指针类型的讲解,相比大家对与指针的理解应该不成问题。这期博客主要就是对:函数指针应用(回调函数)、函数指针数组的应用(转移表)、与指针有关联的知识点等进行深入讲解

 一、指针的应用

1.转移表
  • 转移表就是函数指针数组;将所需要的函数的指针,存储在一个数组中,通过数组得下标去调用函数,这样就能避免代码的冗余。使得代码又清晰,又简化。
  • //转移表代码实践->计算器功能得实现
    #include<stdio.h>
    void menu()
    {
    	printf("************************\n");
    	printf("**** 0.exit   2.sub ****\n");
    	printf("**** 1.Add    3.Mul ****\n");
    	printf("**** 4.div    5.Mor ****\n");
    	printf("************************\n");
    }
    int Add(int x, int y)
    {
    	return x + y;
    }
    int Sub(int x, int y)
    {
    	return x - y;
    }
    int Mul(int x, int y)
    {
    	return x * y;
    }
    int Div(int x, int y)
    {
    	return x / y;
    }
    int Mor(int x, int y)
    {
    	return x % y;
    }
    typedef int(*Fun[])(int, int);
    int main()
    {
    	Fun pf = { 0, Add,Sub ,Mul,Div,Mor };
    	int input = 0;
    	do {
    		menu();
    		printf("请下指令:>");
    		scanf("%d", &input);
    		if (input <= 5 && input >= 0)
    		{
    			int m, n;
    			printf("请输入两个操作数:>");
    			scanf("%d%d", &m, &n);
    			int ret = pf[input](m, n);
    			printf("%d\n", ret);
    		}
    		else
    		{
    			(input == 0 ? printf("关闭计算机\n") : 1);
    			continue;
    		}
    	} while (input);
    
    	return 0;
    }
3.回调函数
  • 回调函数就是⼀个通过函数指针调⽤的函数。
    如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应
4.qsort函数
5.回调函数小试牛刀---冒泡排序模拟qsort的功能

二、与指针有关联的知识点

1.sizeof与strlen
  • sizeof
  • 关键字
  • 计算变量的类型在内存中所占用字节的大小,也就是说它括号里面的式子不参与计算,仅仅判断一下最终结果的类型,然后计算该类型在内存中所占用字节的大小,后返回回来。
  • strlen
  • 库函数,使用的时候,需要包含<string.h>头文件
  • 计算字符串'\0'之前的元素个数,也就说,strlen的停止条件是遇到'\0';所以strlen只能计算字符串的长度。
2.数组名含义
  • 一维数组的数组名
  • 一般情况数组首元素的地址
  • 除了关键字sizeof后面的数组名,与&数组名
  • 二维数组的数组名
  • 一般情况数组首元素的地址
  • 除了关键字sizeof后面的数组名,与&数组名
  • 二维数组的元素是?
  • 二维数组是将每一组一维数组当作它的元素。
  • 所以数组的首元素的地址是第一行数组的地址,

相关推荐

  1. C语言C语言指针

    2024-07-22 18:18:03       22 阅读
  2. C语言——二级指针

    2024-07-22 18:18:03       51 阅读
  3. C语言 数组指针

    2024-07-22 18:18:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 18:18:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 18:18:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 18:18:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 18:18:03       55 阅读

热门阅读

  1. 安卓开发使用seekBar改变ImageView中图片的色彩

    2024-07-22 18:18:03       15 阅读
  2. matlab中feval()的用法

    2024-07-22 18:18:03       15 阅读
  3. 【Linux常用命令】之mkdir命令

    2024-07-22 18:18:03       17 阅读
  4. 在 macOS 上使用 Jadx 进行 APK 反编译

    2024-07-22 18:18:03       19 阅读
  5. C++生成随机数的两种方法

    2024-07-22 18:18:03       13 阅读
  6. Blazor Webassembly多标签页实现非iframe的实现

    2024-07-22 18:18:03       16 阅读
  7. Lianwei 安全周报|2024.07.22

    2024-07-22 18:18:03       21 阅读
  8. js弹出对话框

    2024-07-22 18:18:03       14 阅读