C语言中const有什么用途

C\u8bed\u8a00\u4e2dconst\u6709\u4ec0\u4e48\u7528\u9014

CONST\uff1a\u4e00\u4e2aC\u8bed\u8a00\u7684\u5173\u952e\u5b57

const\u8868\u793a\u5e38\u91cf
\u7528const\u4fee\u9970\u7684 \u8868\u793a\u8fd9\u4e2a\u662f\u4e0d\u80fd\u4fee\u6539\u7684
\u4e00\u65e6\u5bf9const \u505a\u4e86\u4fee\u6539\u64cd\u4f5c\u7684\u8bed\u53e5\uff0c\u7f16\u8bd1\u7684\u65f6\u5019\u5c31\u4f1a\u62a5\u9519\u3002

\u5bf9\u4e8eC \u6765\u8bf4\uff0cconst\u53ea\u662f\u4e00\u4e2a\u901a\u77e5\uff0c\u4e0d\u80fd\u4fee\u6539
\u4f46\u5e76\u4e0d\u662f\u7edd\u5bf9
\u53ef\u4ee5\u901a\u8fc7\u5f3a\u5236\u8f6c\u6362\u53bb\u9664const\u5c5e\u6027\u3002

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。

const关键字的作用主要有以下几点:

(1)可以定义const常量,具有不可变性。 例如:
const int Max=100; int Array[Max];
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(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常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

  • C璇█鍚堟硶鏍囪瘑绗鏈夊摢浜
    绛旓細C璇█鏍囪瘑绗︽槸鎸囩敤鏉ユ爣璇嗘煇涓疄浣撶殑涓涓鍙凤紝鍦ㄤ笉鍚岀殑搴旂敤鐜涓嬫湁涓嶅悓鐨勫惈涔夛紝鏍囪瘑绗︾敱瀛楁瘝锛圓-Z,a-z锛夈佹暟瀛楋紙0-9锛夈佷笅鍒掔嚎鈥淿鈥濈粍鎴愶紝骞朵笖棣栧瓧绗︿笉鑳芥槸鏁板瓧锛屼絾鍙互鏄瓧姣嶆垨鑰呬笅鍒掔嚎銆備緥濡傦紝姝g‘鐨勬爣璇嗙锛歛bc锛宎1锛宲rog_to銆傛爣璇嗙闀垮害鏄敱鏈哄櫒涓婄殑缂栬瘧绯荤粺鍐冲畾鐨勶紝涓鑸殑闄愬埗涓8瀛楃锛堟敞...
  • 鍦C璇█涓static鏈変粈涔鍚箟
    绛旓細static int a;int b;void func(void){ static int c;int d;} 鍦ㄨ繖閲岋紝a涓巄閮芥槸鍏ㄥ眬鍙橀噺锛屼簩鑰呯殑鍖哄埆鏄紝b鍙互琚埆鐨勬枃浠朵娇鐢紝a鍙兘鍦ㄦ湰鏂囦欢涓娇鐢紝杩欐槸static瀵瑰叏灞鍙橀噺鐨勪綔鐢銆俢鍜宒鐨勫尯鍒槸锛宒鏄竴涓嚜鍔ㄥ彉閲忥紝func鍑芥暟鎵ц瀹屽悗锛宒浼氳嚜鍔ㄨ閲婃斁銆備絾c鍗翠笉浼氳閲婃斁锛屼笅涓娆¤皟鐢╢unc鍑芥暟鏃...
  • strcpy鍑芥暟濡備綍浣跨敤
    绛旓細1銆乻trcpy 鍑芥暟浣跨敤鏂规硶锛歴trcpy()鍑芥暟鏄C璇█涓鐨勪竴涓鍒跺瓧绗︿覆鐨勫簱鍑芥暟銆2銆佺┖鎸囬拡妫鏌ワ細婧愭寚閽堝拰鐩殑鎸囬拡閮芥湁鍙兘浼氬嚭鐜扮┖鎸囬拡鐨勬儏鍐碉紝鎵浠ュ簲璇ュ鍏惰繘琛屾鏌ャ3銆乧onst 淇グ锛氭簮瀛楃涓插弬鏁鐢╟onst淇グ锛岄槻姝慨鏀规簮瀛楃涓诧紱4銆佷负浠涔瑕佽缃畆et 鎸囬拡浠ュ強杩斿洖ret鎸囬拡鐨勪綅缃甗3]锛岀敱浜庣洰鐨勬寚閽坉st宸茬粡鍦...
  • c璇█鐨璇█缁勬垚
    绛旓細鍏抽敭瀛楀張绉颁负淇濈暀瀛,灏辨槸宸茶C璇█鏈韩浣跨敤,涓嶈兘浣滃叾瀹鐢ㄩ浣跨敤鐨勫瓧銆備緥濡傚叧閿瓧涓嶈兘鐢ㄤ綔鍙橀噺鍚嶃佸嚱鏁板悕绛夋爣璇嗙鐢盜SO鏍囧噯瀹氫箟鐨凜璇█鍏抽敭瀛楀叡32涓:auto double int struct break else long switchcase enum register typedef char extern return unionconst float short unsigned continue for signed voiddefault ...
  • C璇█闂:鏍囪瘑绗︿负浠涔涓嶈兘浣跨敤鍏抽敭瀛?
    绛旓細浼氬紩璧蜂簩鎰忔э紝缂栬瘧鍣ㄤ細璇В鎰忔濓紝缂栬瘧涓嶄笅鍘汇備緥濡 void main(){ int if=1;// 銆傘傘倉 鏍囪瘑绗 鐢浜 if锛 缂栬瘧鍣ㄨ鍒癷f锛岃涓烘槸鏉′欢璇彞寮濮嬶紝閭d箞if浠ュ墠搴斿綋鏄笂涓涓鍙ワ紝鑰岃鍙ュ悓璇彞闂村簲褰撶敤鍒嗗彿鍒嗛殧锛岀紪璇戝櫒鍦╥f鍓嶅綋鐒舵壘涓嶅埌鍒嗗彿锛屼簬鏄姤閿欌渋f 鍓嶆紡浜嗗垎鍙封濄俰f 鍚庨潰搴斿綋鏄皬鎷彿锛屽啓...
  • 绠杩C璇█涓鍑芥暟鐨勫舰寮忓弬鏁板畾涔夋椂鐨勬敞鎰忎簨椤 姹傝В...
    绛旓細1銆佸舰鍙備釜鏁颁笉鑳藉お澶氾紝澶氫簡灏辩敤缁撴瀯浣撴寚閽堝惂锛2銆佷笉闇瑕佹惡甯︽暟鎹繑鍥鐨鏀惧湪鍓嶉潰锛岄渶瑕佹惡甯︽暟鎹繑鍥炵被鍨嬬殑鏀惧湪鍚庨潰鍚э紱3銆佷笉瑕佺洿鎺ヤ紶閫掔粨鏋勪綋鍝︼紱4銆佷竴鑸湴锛屾寚閽堢被鍨嬫渶濂藉姞涓const淇グ锛岄櫎闈炴湁鐗规畩鐢ㄩ锛5銆佸敖閲忎笉瑕佷娇鐢╞ool绫诲瀷鍋氫负褰㈠紡鍙傛暟锛6銆佸埆蹇樹簡缁欎竴涓畝娲佸ソ鍚殑鍚嶅瓧 ...
  • 璇烽棶c璇█涓鐨刴acro鏄粈涔堟剰鎬,涓巉unction鏈変粈涔鍖哄埆
    绛旓細2銆佺粺涓浣跨敤涓浜涘父閲忋備笉鑷充簬閲嶅閿叆銆3銆佷竴浜涘揩閫熷皬杩囩▼銆傚畯鍦ㄧ紪璇戞椂灏辫缈昏瘧鎴愬父閲忋傜敱浜庤繖绉嶇炕璇戯紝瀹忓彲浠ュ啓涓浜涘皬杩囩▼锛屽綋鎴愬唴宓岃繃绋嬶紝璋冪敤鏃舵瘮function瑕佸揩 鍦╟++涓繖绉嶅畯杩囩▼鍩烘湰涓婅inline function锛屽畯甯搁噺琚const鍙栦唬銆傛墍浠ュ湪c++涓熀鏈笂鍙敤鏉ョ紪璇戞祦绋嬫帶鍒讹紝c涓敤鐨鑼冨洿骞夸竴浜涖
  • c++ 绫讳腑瀵硅薄鐨勫紩鐢
    绛旓細寮曠敤寮曞叆浜嗗璞$殑涓涓悓涔夎瘝銆傚畾涔夊紩鐢ㄧ殑琛ㄧず鏂规硶涓庡畾涔夋寚閽堢浉浼硷紝鍙槸鐢&浠f浛浜*銆傚紩鐢紙reference锛夋槸c++瀵c璇█鐨閲嶈鎵╁厖銆傚紩鐢ㄥ氨鏄煇涓鍙橀噺锛堢洰鏍囷級鐨勪竴涓埆鍚嶏紝瀵瑰紩鐢ㄧ殑鎿嶄綔涓庡鍙橀噺鐩存帴鎿嶄綔瀹屽叏涓鏍枫傚紩鐢ㄧ殑澹版槑鏂规硶锛氱被鍨嬫爣璇嗙 &寮曠敤鍚=鐩爣鍙橀噺鍚嶏紱寮曠敤璇存槑锛氾紙1锛&鍦ㄦ涓嶆槸姹傚湴鍧杩愮畻锛岃屾槸...
  • 涓涓C璇█闂?
    绛旓細2銆佸眬閮ㄥ彉閲忥細瀵瑰眬閮ㄥ彉閲忕洿鎺ヤ慨鏀逛篃浼氬け璐ワ紝鑰鐢闂存帴淇敼鍒欐垚鍔燂紝涓昏鏄眬閮ㄥ彉閲忔斁鍦ㄦ爤涓娿傛敞鎰忥細杩樻湁涓涓const浼父閲忥紝瀹冭繕涓嶅彲浠ヨ繘琛屽垵濮嬪寲鏁扮粍鐨鐗圭偣銆傞棶棰9锛氭槸鍚﹀彲浠ヤ慨鏀瑰瓧绗︿覆甯搁噺锛熻繖涓棶棰樺叧閿湅缂栬瘧鍣紝姣曠珶涓嶅悓鐨勭紪璇戝櫒鍙兘鏈変笉鍚岀殑澶勭悊鏂瑰紡锛屽悓鏃禔NSI娌℃湁鎸囧畾鍑烘爣鍑嗐傚湪娴嬭瘯鏃跺欐湁浜涚紪璇戝櫒鍙互...
  • C璇█涓鍙橀噺鍚嶇殑鍛藉悕鍘熷垯鏄浠涔?
    绛旓細銆const銆 float 銆乻hort銆 unsigned銆 continue銆 for銆 signed 銆乿oid銆乨efault 銆乬oto銆 sizeof 銆乿olatile銆 do 銆乮f 銆亀hile銆 static銆傝繖32涓叧閿瓧灏辨槸宸茬粡琚C璇█鏈韩浣跨敤锛屼笉鑳戒綔涓哄叾浠鐢ㄩ浣跨敤锛屾瘮濡備笉鑳藉畾涔夋垚鍙橀噺鍚嶃佸嚱鏁板悕銆備互涓婂氨鏄湰绡囨枃绔鐨鍏ㄩ儴鍐呭锛屽笇鏈涜兘瀵瑰ぇ瀹剁殑瀛︿範鏈夋墍甯姪銆
  • 扩展阅读:学习c++的视频 ... python和c++学哪个好 ... c++免费视频教程 ... c#一般用来开发什么 ... c++入门程序代码 ... c++中<< ... 学c#有前途吗 ... ctrl c不能用了怎么办 ... c语言const用法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网