c语言中的关键字const

来源:互联网 发布:网红淘宝 扒皮 编辑:程序博客网 时间:2024/06/06 08:32

关键字 const 的几个用法规则:

1. const 可以用来保护 数组元素, 
    例如:void sum(const int arr[], int n)
 在函数里面不能对数组元素进行更改


   用const定义数组表示数组元素不能进行更改;
   例如:const int arr[3] = {1, 2, 3};
 arr[2] = 5;  // error
        所以如果不需要改变数组里面的元素,可以使用const来保护数组

2. 可以用const来创建符号常量,例如:const double PI = 3.14
    这样在程序中出现 3.14 的地方都可以用PI来替代


3. 用const定义指针,(主要看const的位置)
     例如:int arr[3] = {1, 2, 3};
   const int * p1 = arr;  
   * p1 = 43;  // error
   // p1指向arr,这样不能通过 * p1 = 43,来改变arr[0],的值,
  // 若要改变arr[0],可以arr[0] = 43;


 int arr[3] = {4, 5, 6};
 int * const pd = arr; // 从此p1 只能指向arr,但是可以通过 *pd 来改变 pd 指向的值
 pd = &arr [2]; // error
 * pd = 43; // 合法


 int arr[3] = {7, 8, 9};
 const int * const p2 = arr;  // 从此 p2 只能指向arr,并且下面两行代码都是错误的
 * p2 = 43;   //error
 p2 = & arr[1];  //error


4.将常量或非常量者数据的地址赋给指针常量的指针是合法的;
    例如:int arr[5] = {89, 98, 45, 56, 35};
        const int rates[4] = {1, 2, 3, 4};
     const int * pc = arr;  // 合法
     pc = rates;   // 合法
   但是普通指针只能指向非常量数据
   例如:const int arr[3] = {1, 2, 3};
 int rates[3] = {4, 5, 6};
 int * pd = rates;  // 合法
 pd = arr;     // 非法

// 这样定义的函数可以接收常量非常量类型数据的地址  
void arr_show(const int arr[], int n)
{
// 语句
}
//但是这样定义的函数只能接收常量类型数据的地址
void arr_mult(int arr[], int n)
{
// 语句

}

*****************************************************************************************************************************

参考:《C primer plus》第五版 中文版
0 0
原创粉丝点击