WEB开发网
开发学院软件开发VC const传奇 阅读

const传奇

 2007-03-16 21:56:40 来源:WEB开发网   
核心提示:简介当我自己写程序需要用到const的时候,或者是读别人的代码碰到const的时候,const传奇,我常常会停下来想一会儿,许多程序员从来不用const,理由是即使没用const他们也这么过来了,const用来修饰char*,字符串char*不可变(也就是指向字符串常量的指针),这两种方式可以组合起来使用,本文仅对co

简介

当我自己写程序需要用到const的时候,或者是读别人的代码碰到const的时候,我常常会停下来想一会儿。许多程序员从来不用const,理由是即使没用const他们也这么过来了。本文仅对const的用法稍作探讨,希望能够对提高软件的源代码质量有所帮助。

常变量

变量用const修饰,其值不得被改变。任何改变此变量的代码都会产生编译错误。Const加在数据类型前后均可。

例如

void main(void)
{
  const int i = 10;  //i,j都用作常变量
  int const j = 20;
  i = 15;      //错误,常变量不能改变
  j = 25;      //错误,常变量不能改变
}
常指针

Const跟指针一起使用的时候有两种方法。

const可用来限制指针不可变。也就是说指针指向的内存地址不可变,但可以随意改变该地址指向的内存的内容。

void main(void)
{
  char* const str = "Hello, World";  //常指针,指向字符串
  *str = ''M'';      //可以改变字符串内容
  str = "Bye, World";    //错误,如能改变常指针指向的内存地址
}
const也可用来限制指针指向的内存不可变,但指针指向的内存地址可变。void main(void)
{
  const char* str = "Hello, World";  //指针,指向字符串常量
  *str = ''M'';    //错误,不能改变字符串内容
  str = "Bye, World";  //修改指针使其指向另一个字符串
  *str = ''M'';    //错误,仍不能改变字符串内容
}
看完上面的两个例子,是不是糊涂了?告诉你一个诀窍,在第一个例子中,const用来修饰指针str,str不可变(也就是指向字符的常指针);第二个例子中,const用来修饰char*,字符串char*不可变(也就是指向字符串常量的指针)。

这两种方式可以组合起来使用,使指针和内存内容都不可变。

1 2 3 4  下一页

Tags:const 传奇

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接