C语言编程中,什么时候应该使用const修饰符
使用const修饰符有几个原因:
第一个原因是这样能使编译程序找出程序中不小心改变变量值的错误。
请看下例:
while ( * str=0) / * programmer meant to write * str! =0 * /
{
/ * some code here * /
strq++;
}
其中的“=”符号是输入错误。如果在说明str时没有使用const修饰符,那么相应的程序能通过编译但不能被正确执行。
第二个原因是效率。如果编译程序知道某个变量不会被修改,那么它可能会对生成的代码进行某些优化。
如果一个函数参数是一个指针,并且你不希望它所指向的数据被该函数或该函数所调用的函数修改,那么你应该把该参数说明为const指针。如果一个函数参数通过值(而不是通过指针)被传递给函数,并且你不希望其值被该函数所调用的函数修改,那么你应该把该参数说明为const。然而,在实际编程中,只有在编译程序通过指针存取这些数据的效率比拷贝这些数据更高时,才把这些参数说明为const。
请参见:
1、一个变量可以同时被说明为const和volatile吗?
2、什么时候不应该使用类型强制转换(typecast)?
3、用const说明常量有什么好处?
第一个原因是这样能使编译程序找出程序中不小心改变变量值的错误。
请看下例:
while ( * str=0) / * programmer meant to write * str! =0 * /
{
/ * some code here * /
strq++;
}
其中的“=”符号是输入错误。如果在说明str时没有使用const修饰符,那么相应的程序能通过编译但不能被正确执行。
第二个原因是效率。如果编译程序知道某个变量不会被修改,那么它可能会对生成的代码进行某些优化。
如果一个函数参数是一个指针,并且你不希望它所指向的数据被该函数或该函数所调用的函数修改,那么你应该把该参数说明为const指针。如果一个函数参数通过值(而不是通过指针)被传递给函数,并且你不希望其值被该函数所调用的函数修改,那么你应该把该参数说明为const。然而,在实际编程中,只有在编译程序通过指针存取这些数据的效率比拷贝这些数据更高时,才把这些参数说明为const。
请参见:
1、一个变量可以同时被说明为const和volatile吗?
2、什么时候不应该使用类型强制转换(typecast)?
3、用const说明常量有什么好处?