C语言CONST和DEFINE怎么用? 为什么很多人使用#define而不是const定义常量

C\u8bed\u8a00\u7f16\u7a0b\u6280\u5de7 \u5173\u4e8econst\u548c#define\u7684\u533a\u522b\u5fc3\u5f97

\u7b26\u53f7\u53d8\u91cf\u4e0d\u5206\u914d\u5185\u5b58\uff0c\u5e38\u53d8\u91cf\u5206\u914d\u5185\u5b58\u3002
\u4f60\u5b9a\u4e49\u4e00\u4e2a\u7b26\u53f7\u53d8\u91cf\uff1a#Define PI 3.14

\u7136\u540e\u4f60\u7684\u7a0b\u5e8f\u4f8b\u5982\u662f\u8fd9\u6837\u7684\uff1afloat a=PI*PI;\u5b9a\u4e49\u4e86\u4e00\u4e2afloat\u53d8\u91cfa\uff0c\u5176\u503c\u662fPI*PI\u3002\u7136\u540e\u4f60\u7684\u8fd9\u4e2a\u7a0b\u5e8f\u7ecf\u8fc7\u9884\u7f16\u8bd1,\u53d8\u6210\u4e86\uff1afloat a=3.14*3.14;3.14\u539f\u578b\u66ff\u6362\u4e86PI\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u4e3aPI\u8fd9\u4e2a\u7b26\u53f7\u53d8\u91cf\u5206\u914d\u5185\u5b58\uff0c\u5b9a\u4e49\u7b26\u53f7\u53d8\u91cf\u7684\u610f\u4e49\u53ea\u662f\u5728\u4e8e\u65b9\u4fbf\u7406\u89e3\uff0c\u4f60\u770b\u52303.14\u8fd9\u4e2a\u503c\u4e0d\u4e00\u5b9a\u60f3\u5230\u4ed6\u662f\u5706\u5468\u7387\uff0c\u4f46\u662f\u770b\u5230PI\u4f60\u5c31\u77e5\u9053\u4ed6\u662f3.14.
\u5e38\u53d8\u91cf\u5176\u5b9e\u548c\u666e\u901a\u53d8\u91cf\u4e00\u6837\uff0c\u90fd\u662f\u9700\u8981\u5206\u914d\u5185\u5b58\u7684\uff0c\u4f46\u662f\u5e38\u53d8\u91cf\u7684\u503c\u662f\u4e0d\u80fd\u6539\u53d8\u7684\u3002
\u4e3a\u4ec0\u4e48\u8bf4\u5e38\u53d8\u91cf\u4f18\u4e8e\u7b26\u53f7\u53d8\u91cf\uff0c\u56e0\u4e3a\u5e38\u53d8\u91cf\u5b89\u5168\uff1a
\u4f8b\u5982\uff1a\u4f60\u5b9a\u4e49\u4e00\u4e2a\u7b26\u53f7\u53d8\u91cf#Define PI 3.14+3.14
\u7136\u540e\u4f60\u7684\u7a0b\u5e8f\u4f8b\u5982\u662f\u8fd9\u6837\u7684\uff1afloat a=PI*PI;\u5b9a\u4e49\u4e86\u4e00\u4e2afloat\u53d8\u91cfa\uff0c\u5176\u503c\u662fPI*PI\u3002\u7136\u540e\u4f60\u7684\u8fd9\u4e2a\u7a0b\u5e8f\u7ecf\u8fc7\u9884\u7f16\u8bd1,\u53d8\u6210\u4e86\uff1afloat a=3.14+3.14*3.14+3.14; 3.14+3.14\u539f\u578b\u66ff\u6362\u4e86PI\u3002
\u5982\u679c\u4f60\u5b9a\u4e49\u5e38\u53d8\u91cf\uff1aConst float PI=3.14+3.14\uff1b\u5982\u679c\u4f60\u7684\u7a0b\u5e8f\uff1afloat a=PI*PI;\u5b9a\u4e49\u4e86\u4e00\u4e2afloat\u53d8\u91cfa\uff0c\u5176\u503c\u662fPI*PI\u3002\u7136\u540e\u4f60\u7684\u8fd9\u4e2a\u7a0b\u5e8f\u7ecf\u8fc7\u9884\u7f16\u8bd1,\u53d8\u6210\u4e86\uff1afloat a=(3.14+3.14)*(3.14+3.14);
\u6240\u4ee5\u5e38\u53d8\u91cf\u66f4\u5b89\u5168\uff0c\u4e0d\u4f1a\u51fa\u73b0\u4e0a\u9762\u7684\u6b67\u4e49\u3002

\u5728\u5927\u89c4\u6a21\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u7279\u522b\u662f\u8de8\u5e73\u53f0\u548c\u7cfb\u7edf\u7684\u8f6f\u4ef6\u91cc\u8de8\u5e73\u53f0\u7f16\u8bd1\u65f6\uff0c
\u4e00\u822c\u90fd\u4f7f\u7528 #define \u5b9a\u4e49\u5e38\u91cf\uff0c\u4e3b\u8981\u662f\u4e3a\u4e86\u517c\u5bb9\u6027\u3002
\u4f46\u662f\uff0c\u4ece\u5b89\u5168\u89d2\u5ea6\u8003\u8651\uff0c\u8fd8\u662f\u5efa\u8bae\u4f7f\u7528const\u5b9a\u4e49\u5e38\u91cf\u3002
#define\u662f\u5b8f\u5e38\u91cf\uff0c\u65e0\u8bed\u6cd5\u68c0\u6d4b\uff0c\u53ea\u662f\u5b57\u7b26\u66ff\u6362\u3002
\u800c\u4e14\uff0c#define \u4e0d\u662f\u8bed\u53e5 \u4e0d\u8981\u5728\u884c\u672b\u52a0\u5206\u53f7\uff0c\u5426\u5219\u4f1a\u8fde\u5206\u53f7\u4e00\u5757\u7f6e\u6362\u3002
\u6240\u4ee5\u6211\u4eec\u5728\u5b9a\u4e49\u7684\u65f6\u5019\uff0c\u8981\u517b\u6210\u4e00\u4e2a\u826f\u597d\u7684\u4e60\u60ef\uff0c\u5efa\u8bae\u6240\u6709\u7684\u5c42\u6b21\u90fd\u8981\u52a0\u62ec\u53f7\u3002
const\u5e38\u91cf\u6709\u6570\u636e\u7c7b\u578b\uff0c\u800c\u5b8f\u5e38\u91cf\u6ca1\u6709\u6570\u636e\u7c7b\u578b\u3002
\u7f16\u8bd1\u5668\u53ef\u4ee5\u5bf9const\u5e38\u91cf\u8fdb\u884c\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\u3002
\u800c\u5bf9\u5b8f\u5e38\u91cf\u53ea\u8fdb\u884c\u5b57\u7b26\u66ff\u6362\uff0c\u6ca1\u6709\u7c7b\u578b\u5b89\u5168\u68c0\u67e5\uff0c
\u5e76\u4e14\u5728\u5b57\u7b26\u66ff\u6362\u53ef\u80fd\u4f1a\u4ea7\u751f\u610f\u6599\u4e0d\u5230\u7684\u9519\u8bef\uff08\u8fb9\u9645\u6548\u5e94\uff09\u3002
const\u5b9a\u4e49\u5e38\u91cf\u4ece\u6c47\u7f16\u7684\u89d2\u5ea6\u6765\u770b\uff0c
\u53ea\u662f\u7ed9\u51fa\u4e86\u5bf9\u5e94\u7684\u5185\u5b58\u5730\u5740\uff0c
\u800c\u4e0d\u662f\u8c61#define\u4e00\u6837\u7ed9\u51fa\u7684\u662f\u7acb\u5373\u6570\uff0c
\u6240\u4ee5\uff0cconst\u5b9a\u4e49\u7684\u5e38\u91cf\u5728\u7a0b\u5e8f\u8fd0\u884c\u8fc7\u7a0b\u4e2d\u53ea\u6709\u4e00\u4efd\u62f7\u8d1d
\uff08\u56e0\u4e3a\u662f\u5168\u5c40\u7684\u53ea\u8bfb\u53d8\u91cf\uff0c\u5b58\u5728\u9759\u6001\u533a\uff09\uff0c
\u800c #define\u5b9a\u4e49\u7684\u5e38\u91cf\u5728\u5185\u5b58\u4e2d\u6709\u82e5\u5e72\u4e2a\u62f7\u8d1d\u3002
\u56e0\u6b64\uff0cconst\u76f8\u5bf9\u63d0\u9ad8\u4e86\u7f16\u8bd1\u6548\u7387\u3002

define是单纯的文字替换,比如 define pi 3.14 ,仅仅是把3.14用pi来代替了。主要是便于修改,如果程序中有多个pi值,我要换成3.1415,那么只要把宏定义修改成define pi 3.1415即可
const 定义的是不可变的变量。虽然不可变,但它不是常量。而宏定义define定义的是常量,有具体的值。

define 是用来定义宏
const的作用比较多可以修饰一个变量,参数,函数 ,返回值等,网上例子很多,搜索一下就有很多

DEFINE定义的不要求类型
CONST必须指定类型

  • define鍜宑onst鐨勫尯鍒
    绛旓細const瀹氫箟鐨勫父閲忥紝鍦C璇█涓槸瀛樺偍鍦ㄥ唴瀛樹腑銆侀渶瑕侀澶栫殑鍐呭瓨绌洪棿鐨勶紝鍙湁C++鎵嶄笉浼氫负鍏跺垎閰嶅唴瀛樸佽屾槸灏嗗叾鍌ㄥ瓨鍦ㄧ鍙疯〃涓紝浣垮緱瀹冩垚涓轰竴涓紪璇戞湡闂寸殑甯搁噺锛define瀹氫箟鐨勫父閲忥紝杩愯鏃舵槸鐩存帴鐨勬搷浣滄暟锛屽苟涓嶄細瀛樻斁鍦ㄥ唴瀛樹腑銆俢onst瀹氫箟鐨勫父閲忔槸甯︾被鍨嬬殑锛沝efine瀹氫箟鐨勫父閲忎笉甯︾被鍨嬨傚洜姝efine瀹氫箟鐨勫父閲忎笉鍒╀簬...
  • c璇█闂,杩欎簺鍑芥暟鍚庤竟璺熶釜const 鍟ユ剰鎬 姹傝В
    绛旓細1.銆嬨const涓巇efine銆備袱鑰呴兘鍙互鐢ㄦ潵瀹氫箟甯搁噺锛屼絾鏄痗onst瀹氫箟鏃讹紝瀹氫箟浜嗗父閲忕殑绫诲瀷锛屾墍浠ユ洿绮剧‘涓浜涖#define鍙槸绠鍗曠殑鏂囨湰鏇挎崲锛岄櫎浜嗗彲浠ュ畾涔夊父閲忓锛岃繕鍙互鐢ㄦ潵瀹氫箟涓浜涚畝鍗曠殑鍑芥暟锛屾湁鐐圭被浼煎唴鑱斿嚱鏁(Inline)銆const鍜宒efine瀹氫箟鐨勫父閲忓彲浠ユ斁鍦ㄥご鏂囦欢閲岄潰銆傦紙灏忔敞锛氬彲浠ュ娆″0鏄庯紝浣嗗彧鑳藉畾涔変竴娆★級2.銆嬨媍...
  • c璇█瀹氫箟甯搁噺涓轰粈涔堜笉寤鸿鐢#define
    绛旓細鍙傝 effective C++ 涓殑绗竴绔狅細寤鸿浣跨敤const 鏉℃1锛氬敖閲忕敤const鍜inline鑰屼笉鐢#define 杩欎釜鏉℃鏈濂界О涓猴細鈥滃敖閲忕敤缂栬瘧鍣ㄨ屼笉鐢ㄩ澶勭悊鈥濓紝鍥犱负#define缁忓父琚涓哄ソ璞′笉鏄璇█鏈韩鐨勪竴閮ㄥ垎銆傝繖鏄棶棰樹箣涓銆傚啀鐪嬩笅闈㈢殑璇彞锛歞efine ASPECT_RATIO 1.653 缂栬瘧鍣ㄤ細姘歌繙涔熺湅涓嶅埌ASPECT_RA...
  • C璇█涓懡鍚嶅父閲忎笌绗﹀彿甯搁噺鐨勫尯鍒
    绛旓細const琛ㄧず甯搁噺锛屽畠浼氬湪鏁版嵁鍖哄紑杈熶竴涓┖闂寸敤鏉ュ瓨鍌ㄨ繖涓父閲忥紝浣嗘槸杩欎釜甯搁噺鍙锛屼笉鍙啓銆傜敤define瀹忓彧琛ㄧず浠g爜浠f崲锛屽湪棰勭紪璇戠殑鏃跺欓亣鍒癲efine鐨勬椂鍊欎細鎶婂畠杞崲鎴愮浉搴旂殑鍊硷紝鐒跺悗鍐嶆眹缂栧埌鎸囦护涓幓锛屾墍浠ョ敤瀹忎竴鑸細鎶婃渶鍚庡鐞嗗緱鍒扮殑鍊间細鍐欏叆鎸囦护锛岀敤绔嬪嵆鏁板鍧鐨勬柟寮忓湪鎸囦护绌洪棿閲岄潰 杩欐槸瀹冧滑鏈川涓婄殑鍖哄埆锛岃繕...
  • 鎯宠闂竴涓嬪湪C璇█涓#define N 3 鍜 const int N=3杩欎袱涓湁鍖哄埆鍚梍鐧惧害...
    绛旓細鏈夊尯鍒define N 3 鏄湪棰勫鐞嗘椂澶勭悊锛岀紪璇戝櫒鎵弿鏃跺皢浣跨敤N鐨勫湴鏂瑰叏閮ㄦ浛鎹负3锛const int N 3 鏄湪缂栬瘧鐨勬椂鍊欏鐞嗭紝缂栬瘧鍣ㄥ皢鍦ㄦ暟鎹尯鐢熸垚涓涓彧璇伙紙涓嶅彲鏀瑰彉锛夊彉閲忋
  • 濡備綍鐢c璇█淇敼涓涓暟鍊?
    绛旓細define PI 3.14159 //甯搁噺瀹 const double Pi=3.14159; //姝ゆ椂骞舵湭灏哖i鏀惧叆RAM涓 ...double i=Pi; //姝ゆ椂涓篜i鍒嗛厤鍐呭瓨锛屼互鍚庝笉鍐嶅垎閰嶏紒double I=PI; //缂栬瘧鏈熼棿杩涜瀹忔浛鎹紝鍒嗛厤鍐呭瓨 double j=Pi; //娌℃湁鍐呭瓨鍒嗛厤 double J=PI; //鍐嶈繘琛屽畯鏇挎崲锛屽張涓娆″垎閰嶅唴瀛橈紒const瀹氫箟甯搁噺浠庢眹缂栫殑...
  • C璇█涓庝箞瀹氫箟甯稿彉閲
    绛旓細鎹垜鐨勭粡楠岋紝鍦C涓湁涓夌瀹氫箟甯搁噺鐨勬柟娉曪細绗竴绉嶏紝 浣跨敤#define 瀹忓畾涔夛紝姣斿璇翠綘鎯冲畾涔変竴涓间负10鐨勫父閲忥紝閭d箞锛歞efine value 10 value灏辨槸涓涓间负10鐨勫畯锛屼互鍚庡彧瑕侀亣鍒皏alue 绯荤粺灏卞皢value 鏇挎崲涓10锛屾敞鎰忓畯瀹氫箟鍚庨潰涓嶈兘鏈夊垎鍙枫傜浜岀锛岄噰鐢const 鍏抽敭瀛 鎶婁竴涓彉閲忓0鏄庤浆鎹负甯搁噺澹版槑銆傚嵆锛...
  • 绋嬪簭涓 甯搁噺鐨勮〃绀烘柟寮
    绛旓細瀛楅潰閲忓湪C璇█涓笉鏄父閲忥紙鍦–++涓槸甯搁噺锛夛紝鍥犱负C璇█鏍囧噯涓畾涔変簡淇敼鍏朵腑鍐呭鐨勬搷浣滀负鈥滄湭瀹氫箟琛屼负鈥濓紝淇敼鎿嶄綔鍙兘寮曡捣涓嶇‘瀹氱殑鍚庢灉銆傚鏋滅害瀹氫笉鐢ㄦ寚閽堢瓑鏂瑰紡淇敼鍏朵腑鍐呭锛屽彲浠ユ妸瀛楅潰閲忓綋鍋氬父閲忎娇鐢ㄣ傜敤鍓嶇疆鐨刢onst淇グ鎸囬拡锛屽彲浠ラ檺鍒舵寚閽堜慨鏀瑰叾涓唴瀹癸紝渚嬪const char* str = "aa";锛屾寚閽坰tr鎸囧悜鐨...
  • c璇█涓#indefine鍜宑onst鍙互鐩存帴浜掓崲鍚?闇瑕佹敞鎰忎粈涔
    绛旓細鍙互锛屼笉杩const娌define鐏垫椿 int const abc = 123 define ABC 123 const浣跨敤瑕佸0鏄庢竻妤氭槸浠涔堢被鍨 鑰宒efine鏄湪缂栬瘧鏃剁洿鎺ュ皢浠g爜涓殑ABC鐩存帴鏇挎崲鎴123锛岀浉褰撲簬浣犲湪浠g爜涓啓鐨123 define鍙互瀹氫箟琛ㄨ揪寮忥紝濡#define ADD(x) (x+1)杩樻湁#ifdefine绛夐缂栬瘧锛屾讳箣鍔熻兘寰堝己澶 ...
  • c璇█define鐢ㄦ硶鏄粈涔?
    绛旓細C璇█涓棤鍙傚畯瀹氫箟鐨勪竴鑸舰寮忥細define 瀹忓悕 瀛楃涓诧紝鍏朵腑鐨勨#鈥濊〃绀鸿繖鏄竴鏉¢澶勭悊鍛戒护銆傚嚒鏄互鈥#鈥濆紑澶寸殑鍧囦负棰勫鐞嗗懡浠ゃ傗渄efine鈥濅负瀹忓畾涔夊懡浠ゃ傗滄爣璇嗙鈥濅负鎵瀹氫箟鐨勫畯鍚嶃傗滃瓧绗︿覆鈥濆彲浠ユ槸甯告暟銆佽〃杈惧紡銆佹牸寮忎覆绛夈備緥濡傦細銆#define M (a+b)銆瀹冪殑浣滅敤鏄寚瀹氭爣璇嗙M鏉ヤ唬鏇胯〃杈惧紡(a+b)...
  • 扩展阅读:c++编程 ... c语言const用法 ... c++教程 ... c语言const和define的区别 ... merck ... cognex ... 请说出const和define ... construct ... c++中<< ...

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