现在的位置: 首页 > 综合 > 正文

const

2013年12月10日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭

 

const常量存在于程序的数据段,并在堆栈中分配了空间。const
常量是一个RUN-Time的概念,它在程序中确实的存在着并可以被调用、传递。

const的作用:

  1 const用于定义常量:const定义的常量编译器可以对其进行数据静态类型安全检测。

  2 const修饰函数形式参数:当输入参数为用户定义类型和抽象数据类型时,将“数传递”改为“const&传递”可以提高效率。

   
如:

    void fun(A a);

    void fun( A const & a);

   
第二个函数的效率高,因为其减少了第一个函数存在的临时对象的构件、复制、析构过程都将消耗时间。其不用产生临时对象。

  3 const修饰函数的返回值:如果给“指针传递”的函数返回值加const,则返回值不能直接修饰,

   
且该返回值只能被赋值给const修饰的同类型指针。

   
如:

    const char*GetChar(void){};

    char*ch=GetChar();  //error

    const char*ch=GetChar();  //correct

  4 const
修饰类的成员函数(函数定义体):任何不需要修改数据成员的函数都应该使用const修饰,

   
这样即使不小心修改了数据成员或调用了非const成员函数,编译器也会报错。

   
如:

    int GetCout(void) const;

 

#include<stdio.h>

int main()

const int x=1;

int b=10;

int c=20;

const int *a1=&b;     //常量指针

int *const a2=&b;     //指针常量

const int *const a3=&b;

x=2;    //错,x为常量。

a1=&c;   //对,a1为常量指针,其所指:指向常量的指针,指针所指向的内容不能改变,但是可以改变其所指向的地址。

*a1=1;    //错,指针指向的值被改。

a2=&c;    //错,指针是常量,其一旦确定了,就不能再改变。

*a2=1;    //对,其指向的地址虽然不能变,但地址所代表的内容,可以改变。

a3=&c;    //
错。

*a3=1;    //错。

return 0;

抱歉!评论已关闭.