浅析指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
2018-03-15 21:29
302 查看
对于指针有几个比较难的概念,下面做一些简单的分析:数组指针:是指针,该指针有能力指向一个数组指针数组:是数组,是一个存放指针的数组函数指针:是指针,该指针有能力指向一个函数函数指针数组:是数组,是一个存放函数指针的数组指向函数指针数组的指针:是指针,指针指向一个数组,数组的元素为函数指针。代码说明:
两个有趣的代码:
第二个代码可读性差,可以改写成以下形式:
#include <stdio.h> #include <stdlib.h> int Add(int x, int y) { return x + y; } int main() { int *arr[5];//指针数组 int *(*pArr)[5] = &arr; //数组指针, //它是一个指针,指针有能力指向一个数组 //数组有5个元素,每个元素是一个整形指针 int (*pFun)(int,int) = &Add; //pFun是一个函数指针 //该指针指向一个函数, //函数的参数为int,int类型,返回值为int类型 int(*pFunArr[3])(int, int) = { &Add }; //pFunArr是一个函数指针数组 //该数组有3个元素,每个元素为一个函数指针 //该指针指向一个函数,函数的参数为int,int类型,返回值为int类型 int(*(*ppFunArr)[3])(int, int)=&pFunArr; //ppFunArr是一个指向函数指针数组的指针 //它是一个指针,该指针有能力指向一个数组 //数组有3个元素,每个元素为一个函数指针 //该指针指向一个函数,函数的参数为int,int类型,返回值为int类型 system("pause"); return 0; }对于函数指针和函数指针数组的应用下一篇有讲解,附上链接:应用
两个有趣的代码:
(*(void(*)())0)(); //调用0地址处的函数,该函数为没有参数,返回类型为void的函数 //该代码是把0强转成函数指针,然后再解引用找到函数再调用 void(*signal(int, void(*)(int)))(int); //是一个函数声明,signal是一个函数, //参数为int类型和函数指针类型,返回值为函数指针类型
第二个代码可读性差,可以改写成以下形式:
typedef void(*pfun_t)(int); pfun_t signal(int, pfun_t);
相关文章推荐
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 解析指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针之间的区别
- 【C】理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针的理解
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 关于指针数组、数组指针、及函数指针和指向函数指针数组的指针的一点理解
- 【C语言基础】对指针数组,数组指针,函数指针, 函数指针数组,指向函数指针数组的指针的理解
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 深入理解指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针的理解
- C语言中的指针(指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针)
- 简单分析 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 什么是指针?关于指针的数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针的理解