函数指针的一个例子以及*p和p[0]的关系
来源:互联网 发布:淘宝中小卖家名单 编辑:程序博客网 时间:2024/06/08 15:02
先说几个概念:
p[0]就是*p 就是p所指向的内存中的值
&p是p这个指针本身的地址,&p的类型是int**
&p[0]就是p[0]的地址,也就是p
(&p)[0],就是*(&p),也是p
*p,就是前面说的p[0]
p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。
*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。
&是取地址运算符,&p就是取指针p的地址
int fun1(void){ printf("fun1\n" ); return 1;}int fun2(void){ printf("fun2\n" ); return 1;}int fun3(void){ printf("fun3\n" ); return 1;}typedef int (* pf)(void);int main(int argc, char const *argv[]){ int i; const pf array[] = {fun1,fun2,fun3}; //函数指针数组(只读) const pf *p; //指向函数指针的指针(*p只读) //等价于p=array,array和&array[0]作为右值时,都是表示数组首元素的首地址。 p = &array[0]; //把第一个元素的地址赋给p i = sizeof(array)/sizeof(array[0]); //获取数组元素个数 for (; i; i--,p++) { if (p[0]) //p[0]就是*p,就是指针p指向的内存中的值 { printf("%d\n", (int)p[0]); (*p[0])(); //通过函数指针调用函数 } } return 0;}
阅读全文
0 0
- 函数指针的一个例子以及*p和p[0]的关系
- 指针p,*p,&p之间的区别
- 指针p,*p,&p之间的区别
- 指针中*p,p,&p的理解
- const 和*p的关系
- 指针中P和P+1的大小关系的比较
- 指针*p与地址之间的关系
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- C语言指针的*p++ ,*p(++), (*p)++,*++p的使用
- 指针 *p++和*++p
- P,*P和&P的区别
- C语言,指针变量的*p,p以及&p的区别
- 指针p+1 和&p[1]的差异
- 关于指针char *p和数组char p[] 的区别
- *p++和*++p的区别
- *p++和*++p的区别
- *p和p[]的区别
- *p++和*++p的区别
- 算法基础--分治
- cocos creator 中数据储存的坑。。。
- 女神一秒变路人!腾讯研发出“一键卸妆”功能
- C++容器--- 顺序性容器<Vector>
- Algorithm-week9
- 函数指针的一个例子以及*p和p[0]的关系
- [NOIP2017模拟]Heal
- 算法基础--穷举
- 生成模糊图像
- LeetCode:Palindromic Substrings
- C++容器---关联式容器
- 漫画:如何破解MD5算法?
- 学习才是硬道理
- C++容器----容器适配器