一些常见细节

  • int *p[] int (*p)[] 的区别
    int *p[4];   //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
    int (*p)[4]; //定义一个数组指针,该指针指向含4个元素的一维数组(数组中每个元素是int型)。 // 区分int *p[n]; 和int (*p)[n]; 就要看运算符的优先级了。
    int *p[n]; // 这里,运算符[ ]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组。
    int (*p)[n]; // 这里,( )优先级高,首先说明p是一个指针,指向一个整型的一维数组。

    总结下来就是,越是接近标识符就越说明标识符的性质,看标识符先和哪个结合

    • int *p[ ] 中 p最先和[]结合,所以p是一个数组,至于是什么数组,则要看其他修饰符。下一个和p结合的是指针,说明p数组里面存放的是指针,至于是什么指针,再看int,数组里面的指针指向的是int型的整数。
    • *(*p)[ ] 中, p 最先和*结合,已经奠定了p是一个指针的基础了,至于该指针指向的是什么东西,就要由外层修饰符来决定,外层中首先和p结合的是[ ],这说明了指针p指向的是一个数组,至于该数组存放的是什么样的值,还需要继续向外解析,解析出int才知道,该指针指向一个数组,该数组存放的是int型的整数。
    • int (*p)() 同理,p先和*结合奠定了p是一个指针的基础,往解析得到(),说明该指针指向的是一个函数,该函数参数为空返回值int
    • int (*p[])() p最先和[]结合,说明这是一个数组,然后和*说明数组存放的是指针,()说明该指针指向的是函数,该函数参数为空,返回值int
    • 另外 int (*p)[]() 本意是想p是一个指针,指向一个一个数组,数组存放函数指针。但是没编译器解析出来的是数组存放函数,数组不能存放函数,所以这是不对的,在结合()代表函数之前需要先指明数组存放的是指针,所以应该写成如下:
    • int (*(*p)[])() p是一个指针,指向一个数组,该数组存放的是函数指针,该函数参数为空,返回int。

C语言细节的更多相关文章

  1. C语言细节——献给入门者(三)

    C语言细节——献给入门者(三) >>主题:关于强制类型转换 先来瞎扯下强制类型转换,c语言有很多数据类型,long,short,int,float,double,bool,char等等.当 ...

  2. C语言细节——献给初学者(二)

    C语言细节——献给初学者(二) 主题  循环运用+选择判断 C语言循环有for和while/do...while: 选择判断有:if...else和switch...case 在循环中需要注意搭配br ...

  3. C语言细节——献给入门者(一)

    C语言细节——献给入门者(一) 主题  输入输出需要注意的细节 首先我们要知道大致有scanf(),printf(),getchar(),putchar(),gets(),puts()这几种输入方式. ...

  4. C语言细节总结笔记

    C语言细节总结笔记 */--> C语言细节总结笔记 Table of Contents 1. 三步异或法交换数字 2. 做差法交换数字 3. 按n位置位 4. 求余求商求积 5. 辗除法求最大公 ...

  5. [转载] C语言细节,写的非常棒!

    这篇文章主要讨论C语言细节问题.在找一份工作的时候,语言细节占的比例非常小,之前看某个贴着讨论,估计语言细节在面试中,占了10%的比重都不到,那为什么还要研究C语言的细节呢,我觉得有三个原因促使我总结 ...

  6. 程序员之---C语言细节12(指针和数组细节,"//"的可移植性说明)

    主要内容:指针和数组细节,"//"的可移植性说明 #include <stdio.h> int main(int argc, char **argv) { int a[ ...

  7. C语言细节注意

    前段时间用C语言写了个小的程序,也算是复习了下好久没有用的C语言.也是有好多的坑了,哈哈. 1.C语言的结构体 结构体的命名最好能够做到规范.因为不同的 编译环境下,不是很规范的命名有时候会导致莫名其 ...

  8. 程序员之---C语言细节19(来找茬,由/* */ 引起的凝视错误)

    主要内容:由/* */ 引起的凝视错误 有4处凝视错误 #include <stdio.h> #define N 10 //使用以下宏定义的凝视 #define BSC // #defin ...

  9. C语言细节笔记2

    C语言常见问题笔记:    1. 指针的声明     char * p1, p2;  p1 是一个指向char类型的指针,而p2是一个char类型变量  这是由于 * 并不是基本类型的一部分,而是包含 ...

  10. C语言细节笔记1

    /******************************************************************************* ——笔记 1. 函数申明的书写. 可以 ...

随机推荐

  1. [bzoj 3534][Sdoi2014] 重建

    传送门 Description  T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传 ...

  2. Why use swap when there is more than enough RAM.

    Swappiness is a property of the Linux kernel that changes the balance between swapping out runtime m ...

  3. 2018-2019-2 20165222《网络对抗技术》Exp9 Web安全基础

    1.实践过程记录 1.字符串型注入. 2.整数型注入 3.注入语句查看其他内容 4.xss是一种漏洞,这种漏洞允许用户输入脚本并且浏览器提交的时候不加编码.这种东西是最为流行并且有害的web应用的问题 ...

  4. case设计及验证:入口+页面+展示

    测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...

  5. jQuery插件fontIconPicker配合FontAwesome字体图标库的使用

    同样先上效果图: 怎么样,是不是很好看,jquery fontIconPicker这个插件做的很不错,支持分类,搜索,还有分页功能,可以自定义分页,具体的使用方法我就不一介绍了,我只说一下如何使用fo ...

  6. <JavaScript>几道javascript练习题

    问题1: 作用域(Scope) 考虑以下代码: (function() { var a = b = 5; })(); console.log(b); 控制台(console)会打印出什么? 答案 上述 ...

  7. delete 删除指针

    危险的代码: int* p=new int(1);   delete p;   delete p; 安全的代码: int* p=new int(1);   delete p;   p = NULL; ...

  8. osg #ifdef _WIN32 osg

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osgViewer/Viewer> #include ...

  9. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_09-课程详情页面静态化-静态页面测试

    4 课程详情页面静态化 4.1 静态页面测试 4.1.1 页面内容组成 我们在编写一个页面时需要知道哪些信息是静态信息,哪些信息为动态信息,下图是页面的设计图: 打开静态页面,观察每部分的内容. 红色 ...

  10. 算法习题---4-4骰子涂色(UVa253)

    一:题目 分别对两个骰子的六个面涂色r-红 b-蓝 g-绿,通过转动骰子,看两个骰子是不是一样的涂色方法 (一)题目详解 题目规定了正方体的六个面的序号:从1-,按照这个需要提供涂色序列 (二)案例展 ...