`
jubincn
  • 浏览: 231581 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

C语言中分辨const指针的简单方法

 
阅读更多

在《C专家编程》中看到const的那段,发现尽管以前花时间去研究过这个问题,但现在还是不清楚,因此记录下来我的一些想法,方便以后查阅。


const和指针在一起的声明会出现几种不同的顺序:

const int * num;

int const * num;

int * const num;

其中,1和2的声明都是“指针所指的对象是只读的”,而3指“指针自身是只读的”。


为什么会这样呢?

如果将int拿走,那么1和2的声明其实是一样的,都是const *,而3的声明则是* const。

*操作符是从右向左结合的顺序,那么const *中,const限定的是(*num),(*num)是指针所指向的对象,被限定为只读;而在* const num中const直接限定num,num是指针自身,因此指针被限定为只读。

归根结底,遇到const指针时,将const后面部分用括号括起来,看看是对象还是指针就可分辨了。

分享到:
评论

相关推荐

    23道常见的C语言面试题

    文档内容涵盖了const关键字的使用、指针常量与常量指针的区别、static关键字的作用、全局变量与局部变量的区分、宏定义的作用、内存对齐的概念、inline内联函数的特点、C语言实现面向对象特性的方法、memcpy函数的...

    C++中的4种类型转换方式

    c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非const对象的...

    -C++参考大全(第四版) (2010 年度畅销榜

    5.10 指针应用中的问题 第6章 函数 6.1 函数的一般形式 6.2 数作用域的规则 6.3 函数变元 6.4 传给main()的变元argc和argv 6.5 return语句 6.6 递归 6.7 函数原型 6.8 声明变长参数列表 6.9 传统的与现代的函数参数...

    C++MFC教程

    在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法: 代码如下 BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd...

    语言程序设计课后习题答案

    在C++中,有两种给出注释的方法:一种是延用C语言方法,使用"/*"和"*/"括起注释文字。另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作为注释处理。 2-8 什么叫做表达式?x = 5 + 7是一个...

    C/C++笔试题(附答案,华为面试题系列)

    答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变 量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调 用C 函数。C++提供了一个C 连接交换指定符号...

    一些C面试题,希望能对大家有帮助

    2.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? c用宏定义,c++用inline 3.直接链接两个信令点的一组链路称作什么? PPP点到点连接 4.接入网用的是什么接口? 5.voip都用了那些协议? 6....

Global site tag (gtag.js) - Google Analytics