指针,数组,函数,三者的恩恩怨怨
来源:互联网 发布:网狐精华版 源码 编辑:程序博客网 时间:2024/05/21 08:39
一:指针数组
“指针数组”首先是一个数组,存储的是指针。例如:
int *p[10];
对于这条语句,我们知道下标引用的优先级高于间接访问,所以他首先执行下标引用。因此,p是一个某种类型的数组,这个数组有10个元素。在取得数组的一个元素后随即进行间接访问操作,我们得到一个整型值。所以,p是一个数组,他的元素类型是指向整形的指针。
二:数组指针
“数组指针”首先是一个指针,指向的是数组。例如:
int (*p)[10];
对于这条语;因为括号的存在,所以间接访问的优先级高,所以它是一个指针。接下来是下标引用,所以p指向整型数组。
三:函数指针
函数指针是指向函数的指针,他指向函数。有了指向函数的指针变量后,可以用该指针变量调用函数。
int fun (int x); //声明一个函数;
int (*f)(int x);//声明函数指针;
f = fun;//将函数fun首地址赋值给函数指针;
或者:f = &fun;//把函数地址赋值给函数指针。
例子:下面三个表达式代表什么意思?
A ):char * (*fun1)(char * p1,char * p2)
B ) :char * *fun2(char * p1,char * p2);
C ) :char * fun3(char * p1,char * p2):
c):fun3是函数名,p1,p2是类型为char *的参数,函数的返回值类型是char *
B):与c相比,不同的是函数的返回值类型是char * *
A):这里fun1不是函数,而是指针变量,他指向一个函数,。这个函数有两个指针型参数,返回值也是一个指针。
四:函数指针数组
我们清楚char *(*pf)(char *p)定义的是一个函数指针。既然pf是指针,那么就可以存在数组里面。把该表达式修改一下:
char *(*pf[3])(char *p),这就是 定义了一个函数指针数组。pf是一个数组,数组存放3个指针,每个指针指向一个参数类型为指向字符的指针,返回类型为指向字符的指针的函数。
五 :函数指针数组的指针
函数指针数组的指针其实就是一个指针,只不过他指向一个数组,数组里存放的是指向函数的指针。
例如:char *(*(*pf)[3])(char *p)
pf是一个指针,指向一个包含3个元素的数组,这个数组存放的是指向函数的指针,这些指针指向一些参数类型为指向字符的指针,返回类型是指向字符的指针的函数。
- 指针,数组,函数,三者的恩恩怨怨
- 指针与数组之间的恩恩怨怨
- 指针和数组之间的恩恩怨怨
- C语言指针与数组之间的恩恩怨怨
- C语言指针与数组之间的恩恩怨怨
- C语言指针与数组之间的恩恩怨怨
- C语言指针与数组之间的恩恩怨怨详解
- 指针和数组(第四节 指针与数组之间的恩恩怨怨)
- 函数 数组 指针 三者之间的关系
- 常成员函数和mutable的恩恩怨怨
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针,函数指针数组,函数指针数组的指针
- 函数指针、函数指针数组,函数指针数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- 指针数组,数组指针,函数指针,函数指针数组,指向函数指针数组的指针
- 指针数组 数组指针 函数指针 函数指针数组 函数指针数组的指针
- 第八章:Java_泛型
- Java总结篇系列:Java泛型
- java实现二叉树的构建以及3种遍历方法
- 火车收集算法及其优点
- 《代码大全》读书笔记
- 指针,数组,函数,三者的恩恩怨怨
- Android 7.1 引入了对框架 ExifInterface 的重大改进
- Java总结篇系列:Java多线程(三)
- 节流(Throttling )和防抖(Debouncing )
- 字符串的排列
- [Codeforces551E]GukiZ and GukiZiana(分块)
- 深入理解 RocketMQ
- No parameter name specified for argument of type [java.lang.String],
- Python的切片操作