BBS.ChinaUnix.net
首页
|
新闻
|
Linux
|
FreeBSD
|
AIX
|
Windows
|
博客
|
论坛
|
存储
|
网络
|
人才
|
Wiki
|
资料
|
读书
|
手册
|
下载
|
空间
|
搜索
会员:
密码:
免费注册
|
忘记密码
|
会员登录
|
搜索
|
帮助
const总结
1
2
3
4
5
6
››
首页
»
论坛
»
C/C++
»
论坛跳转 ...
> Functional编程
> 数据仓库与数据挖掘
> 门户网站运维
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 主题推广专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
最近访问的论坛 ...
时代冠军主机588元/两年
|
送Windows新书+500分+2G U盘
| 新版块:
OpenAPI
、
数据仓库与数据挖掘
、
门户网站运维
、
Functional编程
|
"奥运之夏"获奖摄影作品展示
[
打印
] [
订阅
] [
收藏
] [
本帖文本页
] [
推荐此主题给朋友,立即获积分
]
liaoweijun
(jack)
圣骑士
UID:582176
注册:2007-7-2
最后登录: 2008-07-16
帖子:
110
精华:0
可用积分:98 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
来自:湖南
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
1楼
发表于 2008-7-14 16:27
C/C++中const用的很多,但是总让人犯迷糊。总结下它的用法,如果说的不对还请指正。
1、const修饰的后的对象不是一个常量,它只表示修饰的对象是个只读的对象。
可以用下面的方法证明:
const int a = 1;
switch(i)
{
case a: ... break;
case 2: ... break;
default: ... break;
}
如果i等于1,不会执行case a: 后面的语句。
2、const修饰后的对象,默认的表示此对象只能在该文件中用。
如:const int a = 1; 等同于 static const int a = 1;
如想在其他地方用到a,可以这样定义 extern const int a=1;
3.用附件中图的方法去解释一些比较复杂的声明,可以让一些难懂的声明变得很简单。
比方说const int * const p;
用图中的说明,很容易解释,p是一个只读的,指向只读整型的指针。
或者更复杂点的:char * const * (* next)();
可以解释为:next是一个指向函数的指针,该函数返回另外一个指针,这个返回的指针指向一个只读的指向char的指针。
以上说明还不够全面,希望各位大虾把知道共享下呀。
p.JPG
(93.32 KB)
2008-7-14 16:27
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
zx_wing
(骑着猪的青蛙)
大天使
学徒
UID:499746
注册:2006-12-4
最后登录: 2008-10-07
帖子:
2010
精华:
4
可用积分:1784 (家境小康)
信誉积分:100
专家积分:21 (本版:20)
空间积分:0
推广积分:0
来自:成都
状态:...保密...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
2楼
发表于 2008-7-14 16:38
c就不说了
我一直希望哪位老大把c++中const的所有情况解释一次,比如const用在结构体里的时候,用在全局区的时候,用在局部区的时候等等
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
C调 ---- C语言
都是最喜欢的
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
zszjxh
(Felix)
大天使
UID:654060
注册:2007-12-14
最后登录: 2008-10-07
帖子:
1666
精华:0
可用积分:1444 (家境小康)
信誉积分:0
专家积分:42 (本版:30)
空间积分:0
推广积分:0
来自:山东潍坊
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
3楼
发表于 2008-7-14 16:40
C和C++中的const是不一样的
const int a = 1;
switch(i)
{
case a: ... break;
case 2: ... break;
default: ... break;
}
如果i等于1,不会执行case a: 后面的语句。
在C++中这句是会执行的,至少在VC中是这样。
[
本帖最后由 zszjxh 于 2008-7-14 16:45 编辑
]
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
gawk
光明使者
渔夫
UID:394228
注册:2006-3-29
最后登录: 2008-10-07
帖子:
837
精华:0
可用积分:1618 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:804
推广积分:20
来自:广西
状态:
...在线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
4楼
发表于 2008-7-14 17:05
总结的c专家编程上的,鼓励一下
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
虽千万人吾往矣……
修炼perl中……
聆听man老师和perldoc老师教诲……
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
shan_ghost
精灵
UID:527235
注册:2007-2-8
最后登录: 2008-09-29
帖子:
188
精华:0
可用积分:219 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
5楼
发表于 2008-7-14 17:43
俺来补充一点
1、旧的#define语法定义的是“宏替换”,不是严格意义上的常量。
或者说,传统上把#define a 100中的a称为“常量”是不准确的;事实上,前面举例的这个语法有点汇编语言里“立即数”的味道:无需寻址,内嵌于指令。
2、const语法定义了真正的“常量”;编译器必须像普通变量般为它分配存储空间,然后“阻断写操作”。
例:
a.h中:
#define A 100
a.c中:
int AA = 200;
b.h中:
#include “a.h”
extern
volatile
const int AA;
则:
任何一个包含a.h的实现中,A实际都不存在;反汇编码中,表达式中对A的引用会被立即数100替代。
a.c中,AA是个普通整型全局变量;而在包含b.h的实现文件中,AA是一个常量(但它的值总在偷偷的改变)。
如果去掉volatile声明,AA就可能会被不正确的优化掉;有了这个volatile声明,则语意为: AA是一个外部变量;它的值不允许在本单元修改;但其他单元可能随时修改这个值,因而不允许执行常量优化。
(我没有试过能否在a.c中将AA定义为volatile const,然后在b.h中将其当作普通外部变量引用——理论上这么做是完全可以的。但一旦这样做了,须注意a.c中必须加volatile修饰AA。否则编译器优化后,就可能把AA替换为立即数200,于是导致外部对AA的任何修改都反映不到a.c执行逻辑中)
事实上,c/c++中改变变量访问权限的情况极为常见;如string内部存储区指针显然不是const,但用c_str()取得的指针却是const。
总结: const类似于public/private,它的意思是去掉当前代码块对指定变量的写权限。
您对本贴的看法:
鲜花[0]
臭蛋[0]
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
davycu
精灵王
UID:597081
注册:2007-8-6
最后登录: 2008-10-07
帖子:
295
精华:0
可用积分:883 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
6楼
发表于 2008-7-14 17:49
C/C++中const用的很多,但是总让人犯迷糊。总结下它的用法,如果说的不对还请指正。
1、const修饰的后的对象不是一个常量,它只表示修饰的对象是个只读的对象。
可以用下面的方法证明:
const int a = 1;
switch(i)
{
case a: ... break;
case 2: ... break;
default: ... break;
}
如果i等于1,不会执行case a: 后面的语句。
-----------------------------------------------------
昨晚刚看了几页中文版C++ primer, 貌似const一节里就把const变量称为常量啊,我还在想这和宏有何区别呢
哎,C++还真复杂,想学又有点怕怕
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
明月出天山,苍茫云海间。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
tyc611
(?)
大法师
苦海无边
UID:372261
注册:2006-2-14
最后登录: 2008-10-06
帖子:
8532
精华:
7
可用积分:5406 (富足长乐)
信誉积分:210
专家积分:143 (本版:25)
空间积分:822
推广积分:7
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
7楼
发表于 2008-7-14 18:13
LZ说的应该是C++的情况
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
----
想想
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
tyc611
(?)
大法师
苦海无边
UID:372261
注册:2006-2-14
最后登录: 2008-10-06
帖子:
8532
精华:
7
可用积分:5406 (富足长乐)
信誉积分:210
专家积分:143 (本版:25)
空间积分:822
推广积分:7
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
8楼
发表于 2008-7-14 18:19
QUOTE:
原帖由
davycu
于 2008-7-14 17:49 发表
昨晚刚看了几页中文版C++ primer, 貌似const一节里就把const变量称为常量啊,我还在想这和宏有何区别呢
哎,C++还真复杂,想学又有点怕怕
宏替换所得的是字面值常量(不是可寻址的变量),而const变量是具有常量性质的
变量
(可寻址,特别地,C++也允许编译器在合理的情况下直接进行与宏相似的常量替换,此时可能在编译后不会有该const变量对象存在)
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
----
想想
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
davycu
精灵王
UID:597081
注册:2007-8-6
最后登录: 2008-10-07
帖子:
295
精华:0
可用积分:883 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
9楼
发表于 2008-7-14 18:38
QUOTE:
原帖由
tyc611
于 2008-7-14 18:19 发表
宏替换所得的是字面值常量(不是可寻址的变量),而const变量是具有常量性质的变量(可寻址,特别地,C++也允许编译器在合理的情况下直接进行与宏相似的常量替换,此时可能在编译后不会有该const变量对象存在)
你说的这个好像跟C没区别啊
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
明月出天山,苍茫云海间。
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
tyc611
(?)
大法师
苦海无边
UID:372261
注册:2006-2-14
最后登录: 2008-10-06
帖子:
8532
精华:
7
可用积分:5406 (富足长乐)
信誉积分:210
专家积分:143 (本版:25)
空间积分:822
推广积分:7
状态:
...离线...
[
个人空间
] [
短信
] [
博客
]
[
推广获积分
]
10楼
发表于 2008-7-14 19:02
QUOTE:
原帖由
davycu
于 2008-7-14 18:38 发表
你说的这个好像跟C没区别啊
它们是有区别的,不过,我现在也只记得C++中的情况了,期待本版的权威人士予以解答
您对本贴的看法:
鲜花[0]
臭蛋[0]
__________________________________
----
想想
积分兑换专区
|
IT节能和TPC-E活动获奖名单
|
致电800-858-2903,了解DELL如何为你量身订制笔记本
|
送2G U盘
|
站长如何获得资金?
首页
»
论坛
»
C/C++
»
1
2
3
4
5
6
››
论坛跳转 ...
> Functional编程
> 数据仓库与数据挖掘
> 门户网站运维
> Linux论坛
> BSD
> BSD文档中心
> Solaris
> Solaris文档中心
> 互操作专区
> AIX
> AIX文档中心
> AS400
> HP-UX
> HP文档中心
> SCO UNIX
> SCO文档中心
> Tru64 UNIX
> IRIX
> Mac OS X
> C/C++
> Shell
> Java
> Java文档中心
> Php
> php文档中心
> Perl
> Python
> Python文档中心
> Web开发
> 软件工程
> 中间件技术
> GUI编程
> 软件配置管理
> VOIP开发技术
> CPU与编译器
> Ruby
> OpenAPI
> 安全技术
> 网络技术
> 网络技术文档中心
> 存储备份之家
> 存储文档中心
> 存储业界
> 服务器及硬件技术
> MySQL
> MySQL文档中心
> Sybase
> Oracle
> PostgreSQL
> DB2
> Informix
> Web服务器
> Mail服务器
> FTP服务器
> DNS服务器
> Proxy服务器
> LDAP
> VPN
> Lotus
> Samba
> 金融行业
> 电信行业
> 互联网行业
> 制造行业
> 医卫行业
> 教育行业
> 电子政务
> 信息安全
> 交通行业
> IT业界新闻与评论
> IT职业生涯
> IT培训与认证
> IT二手大厅
> IT图书与评论
> 清茶斋
> 投资理财
> 运动地带
> 北京2008奥运专版
> 快乐数码摄影
> 《奥运之夏》摄影赛专区
> 影音文字
> English Forum
> 游戏玩家
> 旅游天下
> IT爱车族
> 文学小说
> CU活动专区
> 主题推广专区
> 站务交流
> 博客站务交流区
> 下载频道交流区
> 空间圈子交流区
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计
Copyright © 2001-2008 ChinaUnix.net All Rights Reserved 联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处
京ICP证041476号
清除 Cookies
-
ChinaUnix
-
Archiver
-
WAP
-
TOP
Processed in 0.155744 second(s), 5 queries , Gzip enabled
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
个人空间管理
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
管理团队
管理统计