C语言笔试常考知识点
1. const 关键字
a) const int a;
b) int const a;
c) const int *a;
d) int * const a;
e) int const * const a;
解析:
a) a为一个int型变量,在它被定义时就应当对其初始化,因为以后就没有机会再去改变它了。
b) 与 a) 是一个意思,const 与 int 的位置可以互换。
c) const 与 int 修饰的都是 (*a) ,这里的a是一个指向 int 型变量的指针,指针 a 的值可以被修改,(*a) 即 a 指向的变量不能被修改。
d) const 修饰 a, 而int 修饰 (*a) ,这里的a是一个指向 int 型变量的指针,指针 a 的值不能被修改,(*a) 即 a 指向的变量可以被修改。
e) 指针 a 的值与 (*a)即a指向的变量均不能被修改。
总结:
1) 如果 const 与 int 是挨在一起的,中间没有*,则两者的位置是可以互换的。
2) 如果 const 或是 int 之后是*,则 const 或是 int 修饰的是(*a),即修饰的是指针 a 指向的变量。
2. (*((void (*)( ))0x80004000)) ( )
解析:
先看 (void (*)( ))0x80004000 。
其中的 void (*)( ) 是函数指针类型,该函数的形参为空,返回值类型为 void 。
于是,(void (*)( ))0x80004000 就是表示,将 0x80004000 强制转换为 void (*)( ) 类型的函数指针,即0x80004000是某函数的入口地址。
然后,请回忆一下 (*p)() 是什么意思?没错,这是用函数指针调用函数的形式。
那么,(*((void (*)( ))0x80004000)) ( ) 就是表示,调用某一个函数, 该函数的入口地址为0x80004000,该函数的形参为空,无返回值。
3. void * ( * (*fp1)(int))[10];
float (*(* fp2)(int,int,int))(int);
int (* ( * fp3)())[10]();
分别表示什么意思?
解析:
1. void * ( * (*fp1)(int))[10]; fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个void*型指针。
2. float (*(* fp2)(int,int,int))(int); fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。
3. int (* ( * fp3)())[10](); fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。
4. 有关指针的数据类型的小结
| 定义 | 含义 |
| int i; | 定义整型变量i |
| int *p; | p为指向整型数据的指针变量 |
| int a[n]; | 定义整型数组a,它有n个元素 |
| int *p[n]; | 定义指针数组p,它由n个指向整型数据的指针元素组成 |
| int (*p)[n]; | p为指向含n个元素的一维数组的指针变量,每一个元素均为整型数据 |
| int (*p)[n](); |
p为指向含n个元素的一维数组的指针变量,每一个元素均为一个函数指针,该函数无形参,返回int型数据 |
| int f(); | f为带回整型数值的函数 |
| int *p(); | p为带回一个指针的函数,该函数指向整型数据 |
| int (*p)(); | p为指向函数的指针,该函数返回一个整型数据 |
| int **p; | p为一个指针变量,它指向一个指向整型数据的指针变量 |
参考文档:《彻底搞定C指针》
C语言笔试常考知识点的更多相关文章
- http面试笔试常考知识点(二)
接上一篇随笔 1. https协议为什么比http安全? 内容加密:建立一个信息安全通道,确保信息传输安全: 身份认证:确保网站的真实性: 数据完整性校验:防止内容被第三方冒充或者篡改 2.常见状态码 ...
- http面试笔试常考知识点(一)
1.什么是http HTTP是客户端和服务器端请求和应答的标准.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求.(我们称这个客户端)叫用 ...
- 找工作笔试面试那些事儿(13)---操作系统常考知识点总结 ZZ 【操作系统】
http://blog.csdn.net/han_xiaoyang/article/details/11285485 上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样, ...
- 前端面试常考知识点---CSS
前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...
- 2018.9.6 Java常考知识点总结
一 Java中的值传递和引用传递(非常重要) 首先要明确的是:"对象传递(数组.类.接口)是引用传递,原始类型数据(整型.浮点型.字符型.布尔型)传递是值传递." 那么什么是值传递 ...
- Java面试常考知识点
1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Jav ...
- 关于Java多线程的一些常考知识点
前言 Java多线程也是面试中经常会提起到的一个点.面试官会问:实现多线程的两种方式以及区别,死锁发生的4个条件以及如何避免发生死锁,死锁和活锁的区别,常见的线程池以及区别,怎么理解有界队列与无界队列 ...
- 面试常考知识点——Java(JVM,JDK,JRE)
1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:(1)Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. ...
- 笔试常考的Java基础
1. Socket编程:ServerSocket (int port) :Creates a server socket, bound to the specified port. Socket(In ...
随机推荐
- CentOS7 网络管理相关命令
contos7 网卡配置文件自动识别ifcfg开头的文件(包括目录) CentOS7网卡命名规则: CentOS 7 开始对于网卡的编号则有另一套规则, 网卡的界面代号现在与网卡的来源有关,基本上的网 ...
- JS 比较日期相隔都少天&& 比较两个日期大小&&指定日期往前后推指定天数
//这些天常接触到有关于js操作日期事 就小结了一下,希望对你有帮助 function conversionDate(a,b){ var start =a.split('-'); var end = ...
- HTML DOM insertBefore() 方法 使用的时候发现一个问题,记录下
在W3C中是这样定义的 第二个参数是可先的,但是在谷歌浏览器和火狐浏览器中测试是会有bug的,第二个参数是必填的,否则会报错 感兴趣的可以测试 以下是我测试的结果: 谷歌浏览器:Uncaught ...
- mysql分区及实例演示
一.为什么要分区? 需求:大数据.解决方案:分而治之,更细一点即为.将大表和大索引分为一个更小的操作单元 在mysql中,分区允许将表.索引和索引编排表细分为更小的单元.分区后,每个分区有自己单独的名 ...
- 数据库---MySQL练习题及答案
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- json对象与json字符串对象格式
var cStr = "{\"c\":\"{\\\"b\\\":\\\"000\\\",\\\"b2\\\&q ...
- 【axc】简单的线性动画绘制
在一个View上绘制一条直线 然后做出相应的动画效果 可以这样封装三个方法: /** * 划线工具 * * @param lineArray 线段的点数组 NSValue 类型 默认第一 ...
- 基于Spark1.3.0的Spark sql三个核心部分
基于Spark1.3.0的Spark sql三个核心部分: 1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet) 2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标 ...
- Fixing “WARNING: UNPROTECTED PRIVATE KEY FILE!” on Linux
If you are getting this error then you probably reset the permissions on your hidden .ssh directory ...
- JS-011-颜色进制转换(RGB转16进制;16进制转RGB)
在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#0000 ...