C 中const,C中const什么意思

1 , C中const什么意思常量,表示不能修改,即只能读,不能写【C 中const,C中const什么意思】
2,c中const 作用const是一个C语言的关键字,它限定一个变量不允许被改变,可以提高代码的可靠性 。const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100)int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中int* m = &a; //出错,常量只能用常指针int c= 1;const int*pc = &c;//常指针可指向常量 const int* pa = &a; //指针指向的内容为常量(就是b的值不变)int const *a = &b; //指针指向的内容为常量(就是b的值不变)*p=3//errorint* const a = &b; //指针为常量,不能更改指针了如 a++但可以改值*p=3;在c语言中const关键字的作用是限定一个变量不允许被改变,换句话说即定义一个常量,用const定义的常量,一般叫做符号常量,只所以叫做符号常量,就是用符号来表示一个常量的语义 。比如下面的代码:12345unsigned longhash_long(unsigned longval, unsigned intbits) unsigned longhash=val *0x9e370001UL; returnhash>>(32-bits); }程序员在读到0x9e370001UL时很难想到这是接近黄金比例的2^32的一个素数 。而如果定义成:1 constunsigned longNearest_Prime = 0x9e370001UL; //这样就更容易阅读一些被const修饰的成员函数表示该函数不会修改类内部的数据成员,作用是为了保护数据不被意外修改,提高代码强健性 。另外如果该类的对象为const类型,则此对象只能调用被const修饰的成员函数,若调用非const类型函数 , 则编译器会报错:非法类型转换----const类型转换为非const类型制定一个常量给程序用 , 比如, const int n = 5; 就说明 , 在这个n的作用域内,其值就是5 ,不能变 , 这样在以后想改n 值时,只改上边那句就成 , 很方便声明只读
3,const 什么意思 C语言1、什么是const?常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的 。(当然,我们可以偷梁换柱进行更新:)编辑本段2、为什么引入const?const 推出的初始目的,正是为了取代预编译指令 , 消除它的缺点,同时继承它的优点 。编辑本段3、主要作用 ?。?)可以定义const常量,具有不可变性 。例如:const int Max=100; int Array[Max];?。?)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患 。例如: void f(const int i)?。?)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改 。同宏定义一样,可以做到不变则已 , 一变都变!如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!?。?)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性 。还是上面的例子,如果在函数体内修改了i , 编译器就会报错;例如: void f(const int i)?。?) 可以节省空间,避免不必要的内存分配 。例如:#define PI 3.14159 //常量宏const doulbe Pi=3.14159; //此时并未将Pi放入RAM中 ......double i=Pi; //此时为Pi分配内存,以后不再分配!double I=PI; //编译期间进行宏替换,分配内存double j=Pi; //没有内存分配double J=PI; //再进行宏替换 , 又一次分配内存!const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数 , 所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝 。?。?) 提高了效率 。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量 , 没有了存储与读内存的操作,使得它的效率也很高 。const 常量,不可以在源代码中显式的修改 。但是还是可以修改的 。因为和真正的常量有区别的 。上面的不要 再说被const修饰的是常量了好不好,这个名字和它本身的作用和意义差别甚大,某些砖家早起写的东西已经误导了大片的人下面的内容不是我写的,声明一下我只要一听到被面试者说:"const意味着常数",我就知道我正在和一个业余者打交道 。去年Dan Saks已经在他的文章里完全概括了const的所有用法 , 因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了 。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案 。(如果你想知道更详细的答案 , 仔细读一下Saks的文章吧 。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?const int a;int const a;const int *a;int * const a;int const * a const;/******/前两个的作用是一样,a是一个常整型数 。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以) 。第四个意思a是一个指向整型数的常指针(也就是说 , 指针指向的整型数是可以修改的,但指针是不可修改的) 。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的) 。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象 。顺带提一句,也许你可能会问 , 即使不用关键字 const,也还是能很容易写出功能正确的程序 , 那么我为什么还要如此看重关键字const呢?我也如下的几下理由:1) 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的 。如果你曾花很多时间清理其它人留下的垃圾 , 你就会很快学会感谢这点多余的信息 。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的 。)2) 通过给优化器一些附加的信息 , 使用关键字const也许能产生更紧凑的代码 。3) 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改 。简而言之 , 这样可以减少bug的出现 。const int a;int const a;这两个是一样的 都是a这个值不可改变 。const int *a;int * const a;这两个就有不同了 。首先第一个是一个指针a,所指向的地址空间内容不可改变 , 但是a本身可以改变指向 。第二个,a本身的指向不可改变,但是他指向的空间内容可以改变 。有什么不明白的加我msn wy030@sina.comconst 用法有多种,这里表示声明常量 , 一般不会被更改,但这不是固定的,也可以使用const 方法修改 。出现const,主要是因为宏定义变量的缺点 , 在宏定义一个变量的时候,是没有类型检测的,编译器没有了编译期间的类型检测,这到运行时可能出错 , 因此出现了const。const是一个C语言的关键字,它限定一个变量不允许被改变 。const在一定程度上可以提高程序的安全性和可靠性
4,c语言中const 是什么意思可以定义const常量,具有不可变性 。例如:const int Max=100; Max++会产生错误; 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患 。例如: void f(const int i) 可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改 。同宏定义一样,可以做到不变则已 , 一变都变!如(1)中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!可以保护被修饰的东西,防止意外的修改,增强程序的健壮性 。还是上面的例子,如果在函数体内修改了i,编译器就会报错;例如: void f(const int i) 可以节省空间,避免不必要的内存分配 。例如: #define PI 3.14159 //常量宏const double Pi=3.14159; //此时并未将Pi放入RAM中 ......double i=Pi; //此时为Pi分配内存,以后不再分配!double I=PI; //编译期间进行宏替换 , 分配内存double j=Pi; //没有内存分配double J=PI; //再进行宏替换,又一次分配内存!const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝 。6. 提高了效率 。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作 , 使得它的效率也很高 。扩展资料:const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位 。它限定一个变量不允许被改变,产生静态作用 。使用const在一定程度上可以提高程序的安全性和可靠性 。另外,在观看别人代码的时候 , 清晰理解const所起的作用,对理解对方的程序也有一定帮助 。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等 。参考资料:const百度百科常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的 。const 推出的初始目的 , 正是为了取代预编译指令,消除它的缺点,同时继承它的优点 。作用:(1)可以定义const常量 , 具有不可变性 。例如:const int Max=100; Max++会产生错误; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患 。例如: void f(const int i) (3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改 。同宏定义一样,可以做到不变则已 , 一变都变!如(1)中 , 如果想修改Max的内容,只需要:const int Max=you want;即可!?。?)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性 。还是上面的例子,如果在函数体内修改了i,编译器就会报错;例如: void f(const int i) { i=10;//error! }const是一个C语言的关键字 , 它限定一个变量不允许被改变 。使用const在一定程度上可以提高程序的安全性和可靠性 。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助 。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C 。(1)可以定义const常量,具有不可变性 。例如:const int Max=100; Max++会产生错误;(2)便于进行类型检查,使编译器对处理内容有更多了解 , 消除了一些隐患 。例如: void f(const int i)(3)可以避免意义模糊的数字出现 , 同样可以很方便地进行参数的调整和修改 。同宏定义一样,可以做到不变则已,一变都变!如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!(4)可以保护被修饰的东西 , 防止意外的修改,增强程序的健壮性 。还是上面的例子,如果在函数体内修改了i,编译器就会报错;例如: void f(const int i) { i=10;//error! }const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的 。const关键字的作用主要有以下几点:(1)可以定义const常量,具有不可变性 。例如: const int Max=100; int Array[Max]; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患 。例如: void f(const int i) (3)可以避免意义模糊的数字出现 , 同样可以很方便地进行参数的调整和修改 。(4)可以保护被修饰的东西,防止意外的修改 , 增强程序的健壮性 。还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如: void f(const int i) (5) 为函数重载提供了一个参考 。class A void f(int i) void f(int i) const }; (6) 可以节省空间,避免不必要的内存分配 。例如: #define PI 3.14159 //常量宏 const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ...... double i=Pi; //此时为Pi分配内存,以后不再分配! double I=PI; //编译期间进行宏替换,分配内存 double j=Pi; //没有内存分配 double J=PI; //再进行宏替换,又一次分配内存! const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝 。(7) 提高了效率 。编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高 。const int a;int const a;这两个是一样的 都是a这个值不可改变 。const int *a;int * const a;这两个就有不同了 。首先第一个是一个指针a,所指向的地址空间内容不可改变,但是a本身可以改变指向 。第二个,a本身的指向不可改变,但是他指向的空间内容可以改变 。有什么不明白的加我msn wy030@sina.com5 , c和c中const用法具体的区别是什么C中的const,功能比较单一 , 较容易理解:作用:被修饰的内容不可更改 。使用场合: 修饰变量 , 函数参数,返回值等 。(c++中应用场合要丰富的多)特点: 是运行时const,因此不能取代#define用于成为数组长度等需要编译时常量的情况 。同时因为是运行时const , 可以只定义而不初始化,而在运行时初始化 。如 const int iConst; 。另外,在c中,const变量默认是外部链接,因此在不同的编译单元中如果有同名const变量,会引发命名冲突,编译时报错 。c++中的const:跟c中比较,内容要丰富很多,当然,作用也更大了1:非类成员const*在c++中,const变量(在这里涉及的const都不是类中的const,类中的const专门提出来记录)默认是内部连接的 , 因此在不同的编译单元中可以有同名的const 变量定义 。*是编译时常量 , 因此可以像#define一样使用 , 而且因为上面一点,可以在头文件中定义const变量,包含的不同的cpp文件(编译单元)中使用而不引起命名冲突 。*编译器默认不为const变量分配内存,除非:1. 使用 extern 申明 ,  2:程序中有引用const 变量的地址 。* 可以使用下面的类型转换(不安全的): 1: int * = (int *)pConst 2: int * = const_cast<int*>pConst(c++解const属性cast)* 函数参数或者返回值能使用 const & or const * 时 , 尽量使用const属性,增强程序健全性 。*c++中临时对象/内置变量默认具有const属性2:类中的const*类中的const与c语言中的const一样,只是运行时常量,不能作为数组维数使用,即不能取代#define 。在类中使用下面两种方式取代#define: 1:static const... 2: enum*类中的const 变量占用存储空间*类中的const成员变量需要在构造函数初始化列表中初始化*const 对象:在该对象生命周期内 , 必须保证没有任何成员变量被改变 。const对象只能调用const成员函数 。*const成员函数: void fun() const ... 不仅能被const对象调用,也能被非const对象调用,因此 , 如果确认一个任何成员函数不改变任何成员变量,应该习惯性将该函数定义成const类型 。如果const成员函数需要改变成员变量,有两种实现方式: 1  , const_cast<class*> this强制取消this指针的const属性 。2:将被改变的成员变量定义成mutable:mutable int i; //应永远只使用第二种方法 , 让任何阅读程序的人都知道该变量可能被const函数改变 。*如果一个对象被定义成const,那么该const对象“可能”会被放入到ROM当中,这在嵌入式开发当中有时非常重要 。。。。(不能有任何自定义的constructor 和destructor 。它的基类或者成员对象不能有自定义的constructor和destructor,不能有任何mutable成员变量)你好!const基本用法是一样的,就是表达 “一个不可改变”的意思只是C++中增加了在类成员函数定义尾增加const使用,表达本函数中无任何对成员变量的修改操作控制 。如:int get_data () const 如有疑问 , 请追问 。const基本用法是一样的 , 就是表达 “一个不可改变”的意思只是C++中增加了在类成员函数定义尾增加const使用,表达本函数中无任何对成员变量的修改操作控制 。如:int get_data () const { return data; }C中的const,功能比较单一,较容易理解:作用:被修饰的内容不可更改 。使用场合: 修饰变量,函数参数 , 返回值等 。(c++中应用场合要丰富的多)特点: 是运行时const,因此不能取代#define用于成为数组长度等需要编译时常量的情况 。同时因为是运行时const,可以只定义而不初始化,而在运行时初始化 。如 const int iConst; 。另外,在c中,const变量默认是外部链接,因此在不同的编译单元中如果有同名const变量,会引发命名冲突,编译时报错 。c++中的const:跟c中比较,内容要丰富很多,当然 , 作用也更大了1:非类成员const*在c++中,const变量(在这里涉及的const都不是类中的const,类中的const专门提出来记录)默认是内部连接的,因此在不同的编译单元中可以有同名的const 变量定义 。*是编译时常量,因此可以像#define一样使用,而且因为上面一点,可以在头文件中定义const变量,包含的不同的cpp文件(编译单元)中使用而不引起命名冲突 。*编译器默认不为const变量分配内存,除非:1. 使用 extern 申明,2:程序中有引用const 变量的地址 。* 可以使用下面的类型转换(不安全的): 1: int * = (int *)pConst 2: int * = const_cast<int*>pConst(c++解const属性cast)* 函数参数或者返回值能使用 const & or const * 时 , 尽量使用const属性,增强程序健全性 。*c++中临时对象/内置变量默认具有const属性2:类中的const*类中的const与c语言中的const一样,只是运行时常量,不能作为数组维数使用,即不能取代#define 。在类中使用下面两种方式取代#define: 1:static const... 2: enum*类中的const 变量占用存储空间*类中的const成员变量需要在构造函数初始化列表中初始化*const 对象:在该对象生命周期内,必须保证没有任何成员变量被改变 。const对象只能调用const成员函数 。*const成员函数: void fun() const ... 不仅能被const对象调用,也能被非const对象调用,因此,如果确认一个任何成员函数不改变任何成员变量 , 应该习惯性将该函数定义成const类型 。如果const成员函数需要改变成员变量,有两种实现方式: 1,const_cast<class*> this强制取消this指针的const属性 。2:将被改变的成员变量定义成mutable:mutable int i; //应永远只使用第二种方法,让任何阅读程序的人都知道该变量可能被const函数改变 。*如果一个对象被定义成const,那么该const对象“可能”会被放入到ROM当中 , 这在嵌入式开发当中有时非常重要 。。。。(不能有任何自定义的constructor 和destructor 。它的基类或者成员对象不能有自定义的constructor和destructor , 不能有任何mutable成员变量)

    推荐阅读