C++-指针阅读能力提升
下面的标识符你肯定在工程中看不到,但是在面试题中却非常常见,掌握掌握还是不错的。
int (*p1)(int*, int (*f)(int*));
int (*p2[5])(int*);
int (*(*p3)[5])(int*);
int*(*(*p4)(int*))(int*);
int (*(*p5)(int*))[5];
嵌入式软件公司对指针的考察非常强,需要深刻的理解。
右左法则 (实在看不懂看这个)
-从最里层的圆括号中未定义的标示符看起
-首先往右看,再往左看
- 遇到圆括号或方括号时可以确定部分类型,并调转方向
-重复2, 3步骤,直到阅读结束
int (*p1)(int*, int (*f)(int*)); ==> p1为指针,指向函数,指向的函数有int*,f为第二个参数, f是一个函数指针,指向的函数参数是int*,返回值为int;;;返回值为int int (*p2[5])(int*); ==> p2为数组,有5个元素,这5个元素为指针,指向函数,函数类型为int (int*) int (*(*p3)[5])(int*); ==> p3为指针,数组指针,指向数组有五个元素,5个元素为指针, 是函数指针,指向的函数类型int(int*) int* (*(*p4)(int*))(int*); ==> p4为指针,函数指针,参数为int*,返回值为指针,是函数指针, 指向的函数类型int*(int*) int (*(*p5)(int*))[5]; ==> p5为指针,函数指针,参数为int*,返回值为指针,指向数组,, 指向的数组类型为int[5]
typedef int(ArrayType)[5]; typedef ArrayType* (FunType)(int*); FunType* p5;
3、小结
右左法则总结于编译器对指针变量的解析过程
指针阅读练习的意义在于理解指针的组合定义
可通过typedef简化复杂指针的定义
C++-指针阅读能力提升的更多相关文章
- C语言学习笔记--指针阅读技巧
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...
- 【CTO俱乐部研修班开课】看板先驱David J. Anderson:看板核心在于创造一种能力——提升敏捷性
看板开发方法是近年来最热门的敏捷和精益开发方法.看板之父David J. Anderson觉得其核心在于帮助企业创造一种能力--提升敏捷性.CTO俱乐部看板研修班将通过理论.沙盘模拟.真实案例分享等阐 ...
- Coding能力提升小技巧
一.使用变量的一般原则 1.变量初始化原则: 通常在变量声明时初始化; 在靠近变量第一次使用的位置初始化; 在类的构造函数里初始化变量. 2.作用域: 使变量引用局部化,即把引用到变量的地方尽可能集中 ...
- 【能力提升】SQL Server常见问题介绍及高速解决建议
前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题.及高速解决这些问题.这些问题是数据库的常规管理问题,对于非常多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 以下一些问题 ...
- 深入理解 C 指针阅读笔记 -- 第六章
Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...
- 深入理解 C 指针阅读笔记 -- 第二章
Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...
- 深入理解 C 指针阅读笔记 -- 第五章
Chapter5.h #ifndef __CHAPTER_5_ #define __CHAPTER_5_ /*<深入理解C指针>学习笔记 -- 第五章*/ /*不应该改动的字符串就应该用 ...
- 【大数据技术能力提升_2】numpy学习
numpy学习 标签(空格分隔): numpy python 数据类型 5种类型:布尔值(bool),整数(int),无符号整数(uint).浮点(float).复数(complex) 支持的原始类型 ...
- 【大数据技术能力提升_4】logistic学习
logistic学习 标签(空格分隔): logistic sigmod函数 逻辑回归 分类 前言: 整体逻辑回归比线性回归难理解点,其还需要<概率论与数理统计>中"二项分布 ...
随机推荐
- antd-design
1. 有mock 时候进度条展示不正常
- Java教程-修炼
在2020这个特殊的时期,在家就是为国家做贡献!一切都会好起来的,加油中国!! Java 第一章 Java概述 1.1 Java历史 1.2 Java语言最主要的特点 1.3 Java环境搭建 1.3 ...
- 优先级队列-堆-STL实现
#include <cstdio> #include <iostream> #include <queue> using namespace std; // 默认是 ...
- python之三目运算符的替代品?
# 不知曾几何时,你是否也觉得Python的三目运算写起来很麻烦呢?(没有过) # 比如: a, b = 3, 4 c = a if a > b else b d = a if a < b ...
- Deepin Linux 升级wine应用
前提是升级已经安装的wine应用 参考: 微信升级 mkdir /tmp/wechat cd /tmp/wechat wget https://dldir1.qq.com/weixin/Windows ...
- Python机器学习及实践 课后小题
目录 第二章 2.3章末小结 @(Python机器学习及实践-----从零开始通往Kaggle竞赛之路) 第二章 2.3章末小结 1 机器学习模型按照使用的数据类型,可分为监督学习和无监督学习两大类. ...
- xadmin使用
xadmin使用 官方 使用参考
- mac 非安全模式 开启
https://github.com/callmelaoda/communicate/issues/8 open -a Google\ Chrome --args --disable-web-secu ...
- php外挂python脚本抓取ajax数据
之前我写过一遍php外挂python脚本处理视频的文章.今天和大家分享下php外挂python实现输入关键字搜索的脚本 首先我们先来分析一波网站: http://www.dzdpw.com/s.php ...
- 浏览器console控制台不显示编译错误/警告
浏览器正常显示报错应该是这样的 ,但是我一不小心右键给Hide message from...了,红色报错字体就没了,解决方法如下: 直接将红色框内的内容叉掉,恢复成filter就OK了