`
skzr.org
  • 浏览: 353572 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

日记 [2006年06月09日] const * 常量 修饰符 与 指针

 
阅读更多

#include <iostream.h>

void main()
{
?int var1 = 10, var2 = 20;
?int * p1;
?const int * p2;//意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?????//说白了就是*p2 = newData;错误
?int const * p3;//注意这种定义形式和const int * p2效果一样的。
?
?int * const p4 = &var1;//注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?
?const int * const p5 = &var1;?//不用说了阿我们只能够用他们而不能够修改任何东西,也就是只读
?int const * const p6 = &var1;?//同上

?//验证:意思是他所指向的*p2是一个常量,我们无法通过p2来修改它所指向的对象
?//初始化
?p2 = &var1;
?p3 = p2;
?
?cout << "{var1=" << var1 << "}{*p2=" << *p2 << "}"
??<< "{*p3=" << *p3 << "}" << endl;

?cout << "期望修改var1=" << var1 << "的内容"<< endl;
?var1++;
?cout << "var1++,var1=" << var1 << "自加后" << endl;

?cout << "期望修改*p2=" << *p2 << "的内容,通过(*p2)++"<< endl;
?//(*p2)++;//error
?cout << "(*p2)++;l-value specifies const object,也就是说(*p2)为常量不可修改,注意上面我们修改了var1" << endl;
?


?//证明:注意这里定义的是常量指针,意味着必须初始化,并且以后不能够修改指针再去指向其他变量,但是他所指向的指可以修改
?cout << "int * const p4 = &var1\n(*p4)++,";
?(*p4)++;
?cout << (*p4);//可以修改
?//p4 = &var2;//error:l-value specifies const object,p4是常量

?//对于p5和p6应该不难理解了吧
?//补充下,如果你通过变量的两个属性入手一样可以解答问题,
?//就是变量的类型和变量的内容数值
?//const int * p1,p1内容数值是一个整形变量的地址;
?//类型是const int * 也就是它是int *,并且他经过*运算后的东西是常量
// int *const p3,p3内容数值是一个整形变量的地址;因为const离类型近
?//类型是int * const 也就是它是int *,并且他的内容是const,因为const离变量近


}

分享到:
评论

相关推荐

    C++ const修饰变量和修饰函数介绍

    关于const最常见的一个面试题是这样的:char *const和const char*有什么区别,大家都知道const修饰符代表的是常量,即const修饰的变量一旦被初始化是不能被更改的,这两个类型一个代表的是指针不可变,一个代表指针...

    高质量C++C编程指南

    2.6 修饰符的位置 * 2.7 注释 * 2.8 类的版式 * 第3章 命名规则 * 3.1 共性规则 * 3.2 简单的Windows应用程序命名规则 * 3.3 简单的Unix应用程序命名规则 * 第4章 表达式和基本语句 * 4.1 运算符的优先级 * 4.2 复合...

    详解C语言中const关键字的用法

    那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定有它的合理性,与预编译指令相比,const修饰符有以下...

    c++中const的使用详解

    Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 1、定义常量(1)const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型...

    Linux C程序设计大全

    4.4.3 限定修饰符const 4.4.4 const关键字修饰指针——在指针定义之前 4.4.5 const关键字修饰指针——在指针定义之中 4.4.6 const关键字修饰指针——在指针定义之前和定义之中 4.4.7 使用const关键字的意义 第5章 ...

    C&C++编程规范(超级实用)

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 3 命名规则 3.1 共性规则 3.2 Windows 应用程序命名规则 3.3 Linux 应用程序函数命名规则 4. 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句 4.3.1 布尔...

    总结C语言中const关键字的使用

    常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时...

    C学习深入学习总结

    3.2 你是否经常使用const常量来代替宏? 6 3.3 下面四种情况,你知道是各表示什么意思吗? 6 3.4 你知道const常量如何初始化吗? 7 4 enum枚举 7 4.1 到底enum所定义出来的类型是一个什么样的类型呢? 7 4.2 作为一...

    C++中const的实现细节介绍(C,C#同理)

     常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)  2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点...

    c/c++ 学习总结 初学者必备

    有些集成化工具可以对const常量进行调试, 但不能对宏量进行调试。 8、函数assert的用法? 答:断言assert是仅在debug版本起作用的宏,用于检查“不应该“发生的情况。程序员可以把assert看成一个在任何系统状态下都...

    高质量C C编程指南

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3章 命名规则 3.1 共性规则 3.2 简单的WINDOWS应用程序命名规则 3.3 简单的UNIX应用程序命名规则 第4章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 IF 语句...

    高质量C++_C编程指南

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3 章 命名规则 3.1 共性规则 3.2 简单的WINDOWS 应用程序命名规则 3.3 简单的UNIX 应用程序命名规 第4 章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 IF ...

    新手必看编程法则C++

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3章命名规则 3.1 共性规则 3.2 简单的Windows应用程序命名规则 3.3 简单的Unix应用程序命名规则 第4章表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句 ...

    高质量C++编程指南.PDF

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3章 命名规则 3.1 共性规则 3.2 简单的Windows应用程序命名规则 3.3 简单的Unix应用程序命名规则 第4章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 if 语句...

    高质量编程C++、C

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3章 命名规则 3.1 共性规则 3.2 简单的Windows应用程序命名规则 3.3 简单的Unix应用程序命名规则 第4章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 ...

    高质量C、C++编程指南

    2.6 修饰符的位置 2.7 注释 2.8 类的版式 第3 章 命名规则 3.1 共性规则 3.2 简单的WINDOWS 应用程序命名规则 3.3 简单的UNIX 应用程序命名规则 第4 章 表达式和基本语句 4.1 运算符的优先级 4.2 复合表达式 4.3 IF ...

    C++学习笔记1

    C++提供了一种更加灵活,更安全的方式来定义常量,即使用const修饰符来定义常量这个常量LIMIT是有类型的,占用存储单元,有地址,可以用指针指向它,但不能修

    高质量C++、C编程指南.doc )

    2.6 修饰符的位置 19 2.7 注释 20 2.8 类的版式 21 第3章 命名规则 22 3.1 共性规则 22 3.2 简单的WINDOWS应用程序命名规则 23 3.3 简单的UNIX应用程序命名规则 25 第4章 表达式和基本语句 26 4.1 运算符的优先级 26...

    高质量C++C编程指南(非扫描高清版)(林锐博士)

    2.6 修饰符的位置. 2.7 注释. 2.8 类的版式. 第3 章 命名规则 3.1 共性规则. 3.2 简单的WINDOWS 应用程序命名规则. 3.3 简单的UNIX 应用程序命名规则 第4 章 表达式和基本语句 4.1 运算符的优先级. 4.2 ...

    高级c语言程序编程思想

    2.6 修饰符的位置 19 2.7 注释 20 2.8 类的版式 21 第3章 命名规则 22 3.1 共性规则 22 3.2 简单的Windows应用程序命名规则 23 3.3 简单的Unix应用程序命名规则 25 第4章 表达式和基本语句 26 4.1 运算符的优先级 26...

Global site tag (gtag.js) - Google Analytics