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语言笔试常考知识点的更多相关文章

  1. http面试笔试常考知识点(二)

    接上一篇随笔 1. https协议为什么比http安全? 内容加密:建立一个信息安全通道,确保信息传输安全: 身份认证:确保网站的真实性: 数据完整性校验:防止内容被第三方冒充或者篡改 2.常见状态码 ...

  2. http面试笔试常考知识点(一)

    1.什么是http HTTP是客户端和服务器端请求和应答的标准.通过使用Web浏览器.网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求.(我们称这个客户端)叫用 ...

  3. 找工作笔试面试那些事儿(13)---操作系统常考知识点总结 ZZ 【操作系统】

    http://blog.csdn.net/han_xiaoyang/article/details/11285485 上一节对数据库的知识做了一个小总结,实际找工作过程中,因为公司或单位侧重点不一样, ...

  4. 前端面试常考知识点---CSS

    前端面试常考知识点---js 1.CSS3的新特性有哪些 点我查看 CSS3选择器 . CSS3边框与圆角 CSS3圆角border-radius:属性值由两个参数值构成: value1 / valu ...

  5. 2018.9.6 Java常考知识点总结

    一 Java中的值传递和引用传递(非常重要) 首先要明确的是:"对象传递(数组.类.接口)是引用传递,原始类型数据(整型.浮点型.字符型.布尔型)传递是值传递." 那么什么是值传递 ...

  6. Java面试常考知识点

    1.  什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Jav ...

  7. 关于Java多线程的一些常考知识点

    前言 Java多线程也是面试中经常会提起到的一个点.面试官会问:实现多线程的两种方式以及区别,死锁发生的4个条件以及如何避免发生死锁,死锁和活锁的区别,常见的线程池以及区别,怎么理解有界队列与无界队列 ...

  8. 面试常考知识点——Java(JVM,JDK,JRE)

    1. 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? 答:(1)Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. ...

  9. 笔试常考的Java基础

    1. Socket编程:ServerSocket (int port) :Creates a server socket, bound to the specified port. Socket(In ...

随机推荐

  1. OpenCV 3.1 StereoBM 获取正确视差Dispariy

    OpenCV更新到3.0版本后,Stereo模块变化的挺多的,首先去掉了StereoBMState和StereoSGBMState这两个专门控制BM和SGBM算法参数的类,而且StereoBM不能直接 ...

  2. [LintCode] Ugly Number 丑陋数

    Write a program to check whether a given number is an ugly number`. Ugly numbers are positive number ...

  3. php链接mysql数据库

    php连接数据库有三种方法,刚刚发现通过mysql_connect,mysql_query连接已被废弃,而现在推荐的是通过“面向对象方法”和“PDO方法”连接数据库. 而我在使用面向对象的方法连接时, ...

  4. #1045 - Access denied for user 'root'@'localhost' (using password: NO)

    解决办法 打开 phpmyadmin里的config.inc.php文件 $cfg['Servers'][$i][ 'host'] = 'localhost';$cfg['Servers'][$i][ ...

  5. mysql sql注入

    防止SQL注入,我们需要注意以下几个要点: 1.永远不要信任用户的输入.对用户的输入进行校验,可以通过正则表达式,或限制长度:对单引号和 双"-"进行转换等. 2.永远不要使用动态 ...

  6. Bootstrap (导航、标签、面包屑导航)

    导航 Bootstrap中可用的导航有相似的标记,用基类.nav开头,这是相似的部分.改变修饰类可以改变样式. <!DOCTYPE html> <html> <head& ...

  7. http://highscalability.com/blog/2015/5/18/how-mysql-is-able-to-scale-to-200-million-qps-mysql-cluster.html

    http://highscalability.com/blog/2015/5/18/how-mysql-is-able-to-scale-to-200-million-qps-mysql-cluste ...

  8. linux 查找命令

    查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查找关键字 -print

  9. win7 iis7 发布asp.net mvc4.0+EF6.0站点记录

    1.处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler” 解决方法: 原因: 1.iis ...

  10. 【Android测试】【第十六节】Instrumentation——初识+实战

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5503645.html 前言 有朋友给我留言说,能否介绍一下 ...