const 有什么作用呢?

经常看到有些函数的参数会写上const,特别是一些字符指针,例如
char * strcpy( char *strDestination, const char *strSource );
为什么要用这个const呢?
[131 byte] By [halleyw-自己动手] at [2008-5-20]
# 1
不让内容被修改。
steedhorse-晨星 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 2
这个const代表是strSource指向的内容不能被更改,建议LZ看看相关资料.这有篇文章
http://www.xxlinux.com/linux/article/development/soft/20060814/3553.html
看看吧
huangyangman-庸人自扰 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 3
简单的说,与define功能类似
guoxiaoshou2000-小兽 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 4
告诉编译器,某些东西已经名花有主了,不要让别人染指。
sjjf-水晶剑锋 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 5
跟define也不尽相同
const是定义常量的(既定义时 赋了初值 不能够再给此常量赋值)
就像int 是定义整形是一样了
sollend at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 6
const char *strSource ?
char const *strSource ?
楼主再想想这吧
# 7
不允许修改strSource所指向的内容。
# 8
const最简单的目的是用来取代C语言中的define,也起是做常量的作用。
定义为const修饰的变量不允许被改变,比起define来,const有很多优点,比如编译器可以做严格的类型检查,作用域控制等。
# 9
const char *strSource 被定义成const的原因是保证不能通过strSource这个指针来修改它指向的字符串的值,而strDestination没有被定义成const是因为要用它来修改字符串的值。
# 10
const关键字至少有下列n个作用:

(1)常引用,那么它引用的对象不能被更新。如果用常引用做形参,便不会意外的发生对实参的更改。const int &n;

(2)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;const int a;或int const a;

(3)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const。

A const int* a; 或int const *a;//*a是const,但指针a可变
B const* int a;或int * const a;//a是const,但*a可变
C (const int* const a;等价于int * const a const;)或int const* const a;//a和*a都是const,常量和指针的值都不能改变

(4)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;格式:int fun(const int a,....)传递引用参数:int fun(const int &a,....)

(5)对于类的数据成员,那么构造函数就只能通过初始化列表对该数据成员进行初始化。

(6)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;格式:int fun(<参数表>)const;

(7)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。格式:const classA operator*(const classA& a1,const classA& a2);operator*的返回结果必须是一个const对象。

(8)常对象,它的数据成员值在整个生存期间不能被改变。也就是常对象必须进行初始化,而且不能被更新。格式:<类名>const<对象名>;或const<类名><对象名>;
# 11
学到!
y_sb-波哥 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...
# 12
声明一个引用形式是常量.
bsnhkvoid*0 at 2007-10-26 > top of Msdn China Tech,C/C++,C语言...