`
chriszeng87
  • 浏览: 736326 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

容易混淆的const

阅读更多

   关键字const并不能把变量变成常量!在一个符号前加上const只表示这个符号不能被赋值。也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序的内部(甚至是外部)的方法来修改这个值。const最有用之处就是用它来限定函数的形参,这样该函数将不会修改实参指针所指的数据,但其他的函数却可能会修改它。

 

      const int * limitp = &limit;

      int i = 27;

      limitp = &i;

 

     这段代码表示limitp是一个指向常量整型的指针。这个指针不能用于修改这个整型数,但是在任何时候,这个指针本身的值却可以改变。这样,它就指向了不同的地址,对它进行解除引用(dereference)操作时会得到一个不同的值!

     const和*的组合通常只用于在数组形式的参数中模拟传值调用。它声称“我给你一个指向它的指针,但你不能修改它“

     const关键字原先如果命名为readonly就好多了。

 

     摘自 人民邮电出版社《C专家编程》 P21

 

分享到:
评论
2 楼 chriszeng87 2011-12-06  
sofire 写道
感觉Const就是给形参用的,其他地方的用处不大。

这个很详细,供参考:http://roclinux.cn/?p=557

好详细,谢谢
1 楼 sofire 2011-12-05  
感觉Const就是给形参用的,其他地方的用处不大。

这个很详细,供参考:http://roclinux.cn/?p=557

相关推荐

    C++容易混淆的基础

    以下是一些C++初学者常遇到的易混淆知识点的详细解释。 1. **基本类型与内存管理**: - **基本类型**:C++中有诸如int、char、float、double等基本数据类型。理解它们的大小和范围是必要的,例如,int通常占用32位...

    类的static,const,static const,const static成员的初始化

    在 C++ 编程中,static、const、static const 和 const static 是四个常见的概念,但它们的初始化方式却容易弄混淆。下面我们将对这四种成员变量的初始化方式进行总结和解释。 1. 类里的 const 成员初始化 在一个...

    C++中一些容易混淆的知识

    ### C++中一些容易混淆的知识 #### Q1. 在函数中,函数为void,此时加return有什么作用?Exit(0)和Exit(1)是什么作用? - **Return**:在`void`类型的函数中添加`return`语句实际上并不会返回任何值。然而,它的...

    详细分析c++ const 指针与指向const的指针

    C++ 编程语言中,const 指针和指向const的指针是两个容易混淆的概念,但它们有着不同的定义和使用场景。在本文中,我们将详细分析 C++ const 指针和指向const的指针,帮助读者更好地理解和学习这两个概念。 const ...

    C++中const与#define的利弊分析

    此外,`#define`定义的常量没有作用域,可以在程序的任何地方被访问,容易引起全局污染。例如: ```cpp #define a 10 void myfunc1() { #define a 20 // ... } ``` 这里,`a`在两个函数中的定义可能会导致混淆...

    c++易混淆面试总结

    类成员指针是C++中一个较为复杂且容易混淆的概念。它允许我们操作类的成员函数和成员变量。根据提供的内容,我们可以将类成员指针分为几类: 1. **非静态成员函数指针**: - 定义方式: ```cpp int(Test::*pFun)...

    JS中var、let、const的异同之处

    总结来说,`var`适合全局或函数范围内的变量声明,但容易引发作用域混淆和变量提升的问题。`let`解决了这些问题,提供了块级作用域,更适合循环和复杂逻辑。`const`则用于声明不可变的值,通常用于常量或对象的引用...

    C语言指针教学探讨研究.pdf

    例如,指向常值的指针和指针常值是一个容易混淆的问题。指向常值的指针是指针所指向的数据为常值,定义这种指针时将须将const放在}号之前。例如:eonst char *s = "hello!"; 此后,s所指向的数据是不可改变的,但s...

    CBS_定义与声明 关键字

    在C语言中,**声明**与**定义**是两个基本但又容易混淆的概念,了解它们的区别对于编程至关重要。本文将深入探讨这两个概念,并介绍几个常用的C语言关键字及其应用。 #### 声明与定义 - **定义**指的是创建一个...

    C++与操作系统等面试题19

    - **缺乏类型检查**:`#define`不支持类型检查,因此容易引发类型错误,如整数与浮点数之间的混淆可能导致计算错误。 **3. 内存占用** - **无内存分配**:`#define`在运行时并不为宏定义分配内存。 - **立即数处理...

    关于C/C++小知识积累

    本文旨在积累C/C++的一些基础知识点,涵盖const修饰符的用法、一些容易混淆的定义以及static关键字和位操作等概念。 首先,const关键字在C/C++中用于声明常量。它的用法多种多样,能够适应不同场景下的需求。例如,...

    typedefy讲解

    - **类型混淆**:当用 `typedef` 定义指针类型时,需要注意 `const` 的位置。例如,`typedef const char *pstr` 和 `typedef char * const pstr` 是不同的,前者是 `const` 修饰指针指向的内容,后者是 `const` ...

    PHP易混淆知识整理笔记

    为了帮助大家更好地理解和使用PHP,下面将对一些常见且容易混淆的知识点进行详细说明。 首先,我们来探讨一下echo和print语句的区别。echo和print在PHP中都是用来输出内容的语句,但它们之间存在细微的差别。echo是...

    Effective C++ 英文版

    1. **对象的初始化与赋值**:C++中,对象的初始化与赋值是有区别的,初学者往往容易混淆。书中强调了使用构造函数初始化而非赋值操作的重要性,特别是对于静态和动态内存管理的对象。 2. **资源管理**:C++中的智能...

    c++教学

    8. **const指针和指针const**:理解const关键字在指针上下文中的不同用法,如`const int *p`(指针非const,所指对象const)和`int * const p`(指针const,所指对象非const)。 9. **智能指针**:C++11引入的智能...

    C++学习笔记

    根据提供的文件信息,本文将对C++中容易混淆的部分进行详细的解析与说明,旨在帮助读者更好地理解并记忆这些重要的概念。 ### C++基础知识回顾 C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的...

    C++基本规则

    - **避免仅靠大小写区分的相似标识符**:X 和 x 在大小写上容易混淆,应避免这种情况。 - **避免全局变量和局部变量同名**:即使它们作用域不同,也可能会导致理解上的困扰。 - **避免名字中出现数字编号**:除非...

    毛泽西 _ 面试经典试题

    这三个声明方式非常相似,容易混淆。记忆技巧是:从右至左读取声明,比如 `char* const cp;` 可以理解为 `cp is a const pointer to char`。 #### 1.2 C指针 - **指针数组**:`int *p[n];` 表示 `p` 是一个包含 `...

    计算机软件-编程源码-C指针详解.zip

    两者在语法上容易混淆,理解它们的区别是C语言进阶的关键。 7. 多级指针 多级指针是指指向指针的指针,例如`int **ptr`。多级指针常用于表示嵌套结构,例如函数返回函数指针,或者在复杂的数据结构(如链表、树)...

    #define 问题 用法陷阱

    当结合使用`#define`和`const`时,可能会出现一些混淆。考虑以下代码片段: ```c typedef char* pStr; char string[4] = "abc"; const char* p1 = string; const pStr p2 = string; p1++; p2++; ``` 在这里,`p1...

Global site tag (gtag.js) - Google Analytics