1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<windows.h>
 4 /* 举列子说明什么是函数指针 */
 5
 6 //以一个加减乘除
 7
 8 void Add(int a, int b){
 9     printf("%d + %d = %d \n" , a , b , a+b);
10 }
11
12 void Sub(int  a , int  b ) {
13     printf("%d - %d = %d \n", a, b, a - b);
14 }
15
16 void Mul(int a, int b) {
17     printf("%d * %d = %d \n", a, b, a * b);
18 }
19 void Div(int a, int b) {
20     printf("%d / %d = %d \n", a, b, a / b);
21 }
22
23
24
25 //对于数组指针。
26 void func() {
27     int * py[5] ;   //定义一个数组指针
28     int aa[] = { 1,2,3,4,5,6 };
29        py[0] = aa;
30     for (int i = 0; i < sizeof(aa) / sizeof(int) ; i++)
31       printf("%d  " , py[0][i]);
32      puts("");
33 }
34 //对于指针数组
35 void  funcp() {
36
37     int(*pt)[5] ;
38     int aa[] = { 1,2,3,4,5 };
39          pt= &aa;
40       for (int i = 0; i < 5; i++) {
41           printf("%d  ",(*pt)[i]);
42       }
43       puts("");
44 }
45
46 int main( void ) {
47     system("echo  下面现实的是指针数组  ");
48     funcp();
49     system("echo  下面现实的是数组指针  ");
50     func();
51   //函数指针的用处
52     system("echo  下面现实的是函数指针  ");
53     void (*p)(int, int)= Add;
54     p(1,2);
55   //函数数组指针 ,这里需要区分指针数组和数组指针
56     /*
57      ...[]优先级高于*
58      数组指针 : (*p)[]  像函数指针一样,表示对于一个数组的指针,指针的类型是数组
59        int  a[10];
60        int (*p)[]=a;
61      指针数组 : *p[]  ==*(p[])  数组里的每一个元素为都为指针
62
63     */
64     system("echo --下面现实的是函数指针数组----  ");
65     void(*ps[])(int, int) = { Add , Sub , Div ,Mul };
66     for (int i = 0; i < 4; i++) {
67              ps[i](1,2);
68     }
69     getchar();
70   return 0;
71 }

由上面那个列子:

我们就可以大概知道这些:

指针  ---》指向的是一个地址、

数组指针:  形如  int *p[4]  -->说的是  p[0]~p[3]均为指针:

如图:

对于指针数组:  形如: int (*p)[5] ;

这 *p是一个指针,但是不是一个 普通的一级指针,有点像二级指针,但是没有二级指针那么大的权限,这样比喻吧:

举个日常的列子:

早上我们都要吃早饭(你丫,要是硬要说你不吃,那就不吃好了! ),但是至于要吃什么--随便,但是规定你,只能吃五碗。指针数组就是这样,你可以指向任何东西,但是都有限制(元素有限制)。

函数指针: 顾名思义是指向函数的指针, 形如:  void (*p) (int a ) ;  这个指针的指向范围就更加的小了,就是只能指向函数。就好比,你早上要么不吃早饭,要吃,就得给老子吃胡萝卜啥的一样一样的。

至于函数指针数组,函数数组指针,其实搞懂了,前面的几种含义,后面的这些指针的意思,大概都可以有清晰的认识。

const int *p ;   ----指针常量,其所指向的对象,只能有读取的权限,并没有写入的权限。

int * const p ; -----常量指针,其地址不能改变。但是改地址的值可读可写。

-----------------以上都是依据自己编程经验的理解,以及平时使用的理解来写的。如果有误,还请指点。--------------------------

C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组相关推荐

  1. C语言main()主函数执行完毕后是否会再执行一段代码

    C语言main()主函数执行完毕后是否会再执行一段代码 分享到: QQ空间 新浪微博 腾讯微博 豆瓣 人人网 main() 主函数执行完毕后,是否可能会再执行一段代码?给出说明. main主函数是所有 ...

  2. pts=pts.reshape((-1,1,2)) 这段代码含义是什么

    这段代码将 pts 变量调整为具有特定形状的数组. pts.reshape((-1,1,2)) 将 pts 变量转换为一个三维数组,其中第一维的大小由原始数组中的元素数量自动计算,第二维和第三维的大小 ...

  3. C learning_11 (数组和在内存存储的理解、数组越界、数组作为形参)

    目录 数组的理解 数组越界 数组作为函数参数 数组的理解 数组的含义 在C语言中,用于存储多个相同类型的元素.它可以被简单地定义为包含多个元素的容器.数组中每个元素都可以通过索引来访问,索引从零开始递 ...

  4. Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)

    1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列). public  class Test {     public static void main(String[] arg ...

  5. Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from it

    Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from iter ...

  6. c c++ 函数内数组初值_C编程基础-关键字-函数和指针

    C术语的基本定义,例如关键字,标识符,运算符,指针,数据类型,void main(),函数和递归. 在大多数情况下,我们突然无法回答一些简单的问题,例如C中的关键字是什么,C中的标识符是什么,C中的数 ...

  7. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用

    一.数组指针和指针数组 1.数组指针(行指针) 首先要知道数组指针是指向数组的指针.所以数组指针本质是个指针,只不过指向一个数组而已.格式为:T (*ptr)[]. 注意:"[]" ...

  8. C语言程序设计 | 指针(二):常量指针和指针常量、数组参数和指针参数、函数指针数组

    指针的进阶(二)目录: 常量指针和指针常量 数组参数和指针参数 函数指针数组 常量指针和指针常量 在我们日常中,经常会用到一个关键字const const是一个C语言(ANSI C)的关键字,具有着举 ...

  9. 怎么查看java的引用类_一段代码看 Java 引用类型

    Java 中的操作数(不知道叫什么,相对于 bytecode 而言,类似 CPU 的操作码和操作数)分为值类型和引用类型: 值类型就是直接存储最终数值的,如 char, int, float, dou ...

最新文章

  1. SCL+Devtoolset 安装与使用笔记
  2. 带你用4行代码训练RNN生成文本(附资源)
  3. 自学python需要买书吗-请问自学 Python 有必要买课程吗?
  4. 面向对象设计原则之一:单一职责原则
  5. 【操作】Nuxt.js安装
  6. java用十字链表实现无向图_实验四:图的实现与应用
  7. 【SpringCloud】第五篇: 路由网关(zuul)
  8. MyBatis的CURD
  9. mysql 时间计算函数_MySQL时间计算函数DATE_SUB()用法简介说明
  10. (18)Zynq FPGA 看门狗定时器介绍
  11. 构建复杂的应用程序(二)—— visual studio 下 C/C++ 项目开发
  12. layui列表筛选列_layui框架的table字段筛选功能介绍
  13. 【精品软件】AE这套神级扩展终于支持2021了,AE脚本-Motion Factory 完整五套解锁版
  14. DELL 笔记本 触摸板 驱动安装 与 禁用启动
  15. 手把手教你用Execel求解一个矩阵的逆矩阵
  16. 七周成为数据分析师—Excel实战篇
  17. mysql 最大值65536_SQL server事物复制报错:要复制的 LOB 数据的长度(xxxxx)超出了配置的最大值 65536...
  18. 记我的启蒙老师谢朝晖老师
  19. 钟平程序员逻辑英语——回归理性——中英文对切基本公式(1-1)
  20. 2021-02-10

热门文章

  1. 创建 Robotium 测试工程
  2. HMAILSERVER集成WEB邮件系统(ROUNDCUBE WEBMAIL)
  3. Execl导入问题之文本转换
  4. 如何让json_encode不转义斜杠
  5. linux的网络配置
  6. concurrent: Callable用法
  7. 经典问题:微服务和分布式的区别
  8. zookeeper的设计猜想-关于 2PC 提交
  9. AnnotationConfigUtils 处理注解Bean 定义类中的通用注解
  10. 设计模式之间的关联关系和对比