C语言中的const(四)

const 知识点
- const声明的变量只能被读

    const int i=5;
    int j=0;

    i=j;   //非法,导致编译错误
    j=i;   //合法 

2.必须初始化

const int i=5;    //合法
const int j;      //非法,导致编译错误 列表内容 列表内容

3.如何在另一.c源文件中引用const常量?

extern const int i;         //合法
extern const int j=10;      //非法,常量不可以被再次赋值

4.可以避免不必要的内存分配

#define STRING "abcdefghijklmn"
const char string[]="ABCDEFGHIJK";

printf(STRING);   //为STRING分配了第一次内存
printf(string);   //为string一次分配了内存,以后不再分配

printf(STRING);   //为STRING分配了第二次内存
printf(string);      
/* 由于const定义常量从汇编的角度来看,只是给出了对应的内存地址, 而不是象#define一样给出的是立即数,所以,const定义的常量在 程序运行过程中只有一份拷贝,而#define定义的常量在内存中有 若干个拷贝。 */

5.C语言中const是一个冒牌货
通过强制类型转换,将地址赋给变量,再作修改即可以改变const常量值。
const变量一览

int main(void)
{
    const int a;    //代表一个常整型数
    int const b;    //代表一个常整型数  
    const char *c;  // 是一个指向常整型数的指针
                    // (所指向的内存数据不能修改,
                    //  但是本身可以修改)
    char * const d; // 常指针(指针变量不能被修改,
                    // 但是它所指向的内存空间可以被修改)
    const char * const e;// 一个指向常量整型的常指针
                         // (指针和它所指向的内存空间,
                         //  均不可以修改)
    return 0;
}

const好处
合理的利用const,
1 指针做函数参数,可以有效的提高代码可读性,减少bug;
2 清楚的分清参数的输入和输出特性

你可能感兴趣的:(C语言)