const 续写
来源:互联网 发布:嘉靖 知乎 编辑:程序博客网 时间:2024/04/29 14:41
杰哥,我翻译了一段,可不可以拿出来看看 李俊杰(2006)(411421510) 21:00:39 没事的。什么都可以 2008杨元超(1374843422) 21:00:43 /*const意味着something是不能被改变的,所以在程序运行的过程中,一个被const限制了的数据对象是一定不能被赋值的,不管以何种方式。通常情况下用const限定来声明一个变量时都会有一个变量的初始化(否则,既然你不能给这个变量赋值,那么这个变量怎么得到一个值呢?),但情况不总是这样的。例如你将要访问一个确定的内存地址空间的内容,并且保证只读不写,那么这个’内容‘就可以用const来限定,并且不用初始化*/ /*把一个非const变量的地址放到一个const指针(当然这里指针所指向的数据类型与前面的变量是相同的)里既安全,而且显然是允许的。而用强制类型转换来把const变量的地址放到一个指向非const变量的指针里是很危险的*/ /*下面是一个简单的例子*/ #include #include void main() { int i; const int ci = 123; /*声明一个指向const变量的指针*/ const int *cpi; /*声明一个指向非const变量的指针*/ int *ncpi; cpi = &ci;//这是允许的 ncpi = &i; ncpi = (int *)cpi;//这需要一个强制类型转换 *ncpi = 0; exit(EXIT_SUCCESS); }
这是刚讨论CONST到底修饰谁,我做了个测试 ,大家 看下也思考下
2008杨元超(1374843422) 21:35:24
#include<stdio.h>
main()
{
int i = 1;
int *p;
/*以下eg2表示改变指针的情形 eg1表示改变指针所指对象的情形
2008杨元超(1374843422) 21:35:24
#include<stdio.h>
main()
{
int i = 1;
int *p;
/*以下eg2表示改变指针的情形 eg1表示改变指针所指对象的情形
const int *p1 = &i;
/*eg1
*p1 = 2;
//error: assignment of read-only location ‘*p1’
*/
/*eg2
p1 = p;
//true
*/
int const *p2 = &i;
/*eg1:
*p2 = 2;
//编译结果:error: assignment of read-only location ‘*p2’
*/
/*eg1:
*p2 = 2;
//编译结果:error: assignment of read-only location ‘*p2’
*/
/*eg2
p2 = p;
//编译结果:true
*/
int *const p3 = &i;
/*eg1:
*p3 = 2;
//编译结果:true
*/
/*eg2:
p3 = p;
//编译结果error: assignment of read-only variable ‘p3’
*/
const int *const p4;
/*eg1:
*p4 = 2;
//编译结果:error: assignment of read-only location ‘*p4’
*/
/*eg1:
*p4 = 2;
//编译结果:error: assignment of read-only location ‘*p4’
*/
/*eg2:
p4 = p;
//编译结果 error:assignment of read-only variable ‘p4’
*/
}
p4 = p;
//编译结果 error:assignment of read-only variable ‘p4’
*/
}
- const 续写
- 该不该写const?
- const 续
- 关于const(早就应该写的)
- UIKIT_EXTERN NSString *const 什么时候要这样写
- 如何写优雅的代码—#define?const?还是enum?
- 写一段程序,实现atoi(const char* s)方法
- const学习(续)
- const
- const
- const
- CONST
- const
- const
- const
- const
- const
- const
- 做试卷模版的方法
- 理解友元 & 递归的reverse
- jad myeclipse插件安装
- mini英汉字典V3.0
- 字符串匹配算法,包含通配符"*"、"?"的匹配
- const 续写
- SOCK_STREAM(说明)
- 注册表处理之注册表检查
- 去除标题栏title的两种方法
- 全面解析Silverlight Toolkit 主题控件的用法
- MySQL的维护语句
- 运行时错误: terminate called after throwing an instance of 'std::out_of_range'
- 欧盟 物联网战略研究路线图 翻译稿 初稿 14
- hibernate映射关系