c语言里const int 和int 有什么区别,const的作用是什么。 C语言中 const Int n=5,与Int n=5有什么...

C\u8bed\u8a00const int *pi\u4e0eint *const pi\u7684\u533a\u522b\u5927\u795e\u4eec\u5e2e\u5e2e\u5fd9

\u4e00\u3001\u4ececonst int i \u8bf4\u8d77 \u4f60\u77e5\u9053\u6211\u4eec\u58f0\u660e\u4e00\u4e2a\u53d8\u91cf\u65f6\u8c61\u8fd9\u6837int i \uff1b\u8fd9\u4e2ai\u662f\u53ef\u80fd\u5728\u5b83\u5904\u91cd\u65b0\u53d8\u8d4b\u503c\u7684\u3002\u5982\u4e0b\uff1a int i = 0; /* . . . */ i = 20; /*\u8fd9\u91cc\u91cd\u65b0\u8d4b\u503c\u4e86*/ \u4e0d\u8fc7\u6709\u4e00\u5929\u6211\u7684\u7a0b\u5e8f\u53ef\u80fd\u9700\u8981\u8fd9\u6837\u4e00\u4e2a\u53d8\u91cf\uff08\u6682\u4e14\u79f0\u5b83\u53d8\u91cf\uff09\uff0c\u5728\u58f0\u660e\u65f6\u5c31\u8d4b\u4e00\u4e2a\u521d\u59cb\u503c\u3002\u4e4b\u540e\u6211\u7684\u7a0b\u5e8f\u5728\u5176\u5b83\u4efb\u4f55\u5904\u90fd\u4e0d\u4f1a\u518d\u53bb\u91cd\u65b0\u5bf9\u5b83\u8d4b\u503c\u3002\u90a3\u6211\u53c8\u5e94\u8be5\u600e\u4e48\u529e\u5462\uff1f\u7528const \u3002 /* . . . */ const int ic =20; /* . . . */ ic = 40; /*\u8fd9\u6837\u662f\u4e0d\u53ef\u4ee5\u7684\uff0c\u7f16\u8bd1\u65f6\u662f\u65e0\u6cd5\u901a\u8fc7\uff0c\u56e0\u4e3a\u6211\u4eec\u4e0d\u80fd\u5bf9const \u4fee\u9970\u7684ic\u91cd\u65b0\u8d4b\u503c\u7684\u3002*/ /*\u8fd9\u6837\u6211\u4eec\u7684\u7a0b\u5e8f\u5c31\u4f1a\u66f4\u65e9\u66f4\u5bb9\u6613\u53d1\u73b0\u95ee\u9898\u4e86\u3002*/ /* . . . */ \u6709\u4e86const\u4fee\u9970\u7684ic \u6211\u4eec\u4e0d\u79f0\u5b83\u4e3a\u53d8\u91cf\uff0c\u800c\u79f0\u7b26\u53f7\u5e38\u91cf\uff0c\u4ee3\u8868\u774020\u8fd9\u4e2a\u6570\u3002\u8fd9\u5c31\u662fconst \u7684\u4f5c\u7528\u3002ic\u662f\u4e0d\u80fd\u5728\u5b83\u5904\u91cd\u65b0\u8d4b\u65b0\u503c\u4e86\u3002 \u8ba4\u8bc6\u4e86const \u4f5c\u7528\u4e4b\u540e\uff0c\u53e6\u5916\uff0c\u6211\u4eec\u8fd8\u8981\u77e5\u9053\u683c\u5f0f\u7684\u5199\u6cd5\u3002\u6709\u4e24\u79cd\uff1a const int ic = 20; \u4e0e int const ic = 20; \u5b83\u4eec\u662f\u5b8c\u5168\u76f8\u540c\u7684\u3002\u8fd9\u4e00\u70b9\u6211\u4eec\u662f\u8981\u6e05\u695a\u3002\u603b\u4e4b\uff0c\u4f60\u52a1\u5fc5\u8981\u8bb0\u4f4fconst \u4e0eint\u54ea\u4e2a\u5199\u524d\u90fd\u4e0d\u5f71\u54cd\u8bed\u4e49\u3002\u6709\u4e86\u8fd9\u4e2a\u6982\u5ff5\u540e\uff0c\u6211\u4eec\u6765\u770b\u8fd9\u4e24\u4e2a\u5bb6\u4f19\uff1a const int *pi \u4e0e int const *pi \u6309\u4f60\u7684\u903b\u8f91\u770b\uff0c\u5b83\u4eec\u7684\u8bed\u4e49\u6709\u4e0d\u540c\u5417\uff1f\u5475\u5475\uff0c\u4f60\u53ea\u8981\u8bb0\u4f4f\u4e00\u70b9\uff1aint \u4e0econst \u54ea\u4e2a\u653e\u524d\u54ea\u4e2a\u653e\u540e\u90fd\u662f\u4e00\u6837\u7684\uff0c\u5c31\u597d\u6bd4const int ic;\u4e0eint const ic;\u4e00\u6837\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5b83\u4eec\u662f\u76f8\u540c\u7684\u3002 \u597d\u4e86\uff0c\u6211\u4eec\u73b0\u5728\u5df2\u7ecf\u641e\u5b9a\u4e00\u4e2a\u201c\u53cc\u5305\u80ce\u201d\u7684\u95ee\u9898\u3002\u90a3\u4e48 int *const pi; \u4e0e\u524d\u4e24\u4e2a\u8bed\u53e5\u53c8\u6709\u4ec0\u4e48\u4e0d\u540c\u5462\uff1f\u6211\u4e0b\u9762\u5c31\u6765\u5177\u4f53\u5206\u6790\u5b83\u4eec\u7684\u683c\u5f0f\u4e0e\u8bed\u4e49\u5427\uff01 \u4e8c\u3001const int *pi\u7684\u8bed\u4e49 \u6211\u5148\u6765\u8bf4\u8bf4const int *pi\u662f\u4ec0\u4e48\u4f5c\u7528 \uff08\u5f53\u7136int const *pi\u4e5f\u662f\u4e00\u6837\u7684\uff0c\u524d\u9762\u6211\u4eec\u8bf4\u8fc7\uff0c\u5b83\u4eec\u5b9e\u9645\u662f\u4e00\u6837\u7684\uff09\u3002\u770b\u4e0b\u9762\u7684\u4f8b\u5b50\uff1a /* \u4ee3\u7801\u5f00\u59cb */ int i1 = 30; int i2 = 40; const int *pi = &i1; pi = &i2; /* \u6ce8\u610f\u8fd9\u91cc\uff0cpi\u53ef\u4ee5\u5728\u4efb\u610f\u65f6\u5019\u91cd\u65b0\u8d4b\u503c\u4e00\u4e2a\u65b0\u5185\u5b58\u5730\u5740*/ i2 = 80; /* \u60f3\u60f3\u770b\uff1a\u8fd9\u91cc\u80fd\u7528*pi = 80\u6765\u4ee3\u66ff\u5417\uff1f\u5f53\u7136\u4e0d\u80fd\uff01*/ printf("%d\n", *pi); /* \u8f93\u51fa\u662f80 */ /* \u4ee3\u7801\u7ed3\u675f */ \u8bed\u4e49\u5206\u6790\uff1a \u770b\u51fa\u6765\u4e86\u6ca1\u6709\u554a\uff0cpi\u7684\u503c\u662f\u53ef\u4ee5\u88ab\u4fee\u6539\u7684\u3002\u5373\u5b83\u53ef\u4ee5\u91cd\u65b0\u6307\u5411\u53e6\u4e00\u4e2a\u5730\u5740\u7684\uff0c\u4f46\u662f\uff0c\u4e0d\u80fd\u901a\u8fc7*pi\u6765\u4fee\u6539i2\u7684\u503c\u3002\u8fd9\u4e2a\u89c4\u5219\u7b26\u5408\u6211\u4eec\u524d\u9762\u6240\u8bb2\u7684\u903b\u8f91\u5417\uff1f\u5f53\u7136\u7b26\u5408\u4e86\uff01 \u9996\u5148const \u4fee\u9970\u7684\u662f\u6574\u4e2a*pi\uff08\u6ce8\u610f\uff0c\u6211\u5199\u7684\u662f*pi\u800c\u4e0d\u662fpi\uff09\u3002\u6240\u4ee5*pi\u662f\u5e38\u91cf\uff0c\u662f\u4e0d\u80fd\u88ab\u8d4b\u503c\u7684\uff08\u867d\u7136pi\u6240\u6307\u7684i2\u662f\u53d8\u91cf\uff0c\u4e0d\u662f\u5e38\u91cf\uff09\u3002 \u5176\u6b21\uff0cpi\u524d\u5e76\u6ca1\u6709\u7528const \u4fee\u9970\uff0c\u6240\u4ee5pi\u662f\u6307\u9488\u53d8\u91cf\uff0c\u80fd\u88ab\u8d4b\u503c\u91cd\u65b0\u6307\u5411\u53e6\u4e00\u5185\u5b58\u5730\u5740\u7684\u3002\u4f60\u53ef\u80fd\u4f1a\u7591\u95ee\uff1a\u90a3\u6211\u53c8\u5982\u4f55\u7528const \u6765\u4fee\u9970pi\u5462\uff1f\u5176\u5b9e\uff0c\u4f60\u6ce8\u610f\u5230int *const pi\u4e2dconst \u7684\u4f4d\u7f6e\u5c31\u5927\u6982\u53ef\u4ee5\u660e\u767d\u4e86\u3002\u8bf7\u8bb0\u4f4f\uff0c\u901a\u8fc7\u683c\u5f0f\u770b\u8bed\u4e49\u3002\u54c8\u54c8\uff0c\u4f60\u53ef\u80fd\u5df2\u7ecf\u770b\u51fa\u4e86\u89c4\u5f8b\u5427\uff1f\u90a3\u4e0b\u9762\u7684\u4e00\u8282\u4e5f\u5c31\u6ca1\u5fc5\u8981\u770b\u4e0b\u53bb\u4e86\u3002\u4e0d\u8fc7\u6211\u8fd8\u5f97\u7ee7\u7eed\u6211\u7684\u6218\u6597\uff01 \u4e09\u3001\u518d\u770bint *const pi \u786e\u5b9e\uff0cint *const pi\u4e0e\u524d\u9762\u7684int const *pi\u4f1a\u5f88\u5bb9\u6613\u7ed9\u6df7\u6dc6\u7684\u3002\u6ce8\u610f\uff1a\u524d\u9762\u4e00\u53e5\u7684const \u662f\u5199\u5728pi\u524d\u548c*\u53f7\u540e\u7684\uff0c\u800c\u4e0d\u662f\u5199\u5728*pi\u524d\u7684\u3002\u5f88\u663e\u7136\uff0c\u5b83\u662f\u4fee\u9970\u9650\u5b9api\u7684\u3002\u6211\u5148\u8ba9\u4f60\u770b\u4f8b\u5b50\uff1a /* \u4ee3\u7801\u5f00\u59cb */ int i1 = 30; int i2 = 40; int *const pi = &i1; /* pi = &i2; \u6ce8\u610f\u8fd9\u91cc\uff0cpi\u4e0d\u80fd\u518d\u8fd9\u6837\u91cd\u65b0\u8d4b\u503c\u4e86\uff0c\u5373\u4e0d\u80fd\u518d\u6307\u5411\u53e6\u4e00\u4e2a\u65b0\u5730\u5740\u3002\uff08\u7b2c4\u884c\u7684\u6ce8\u91ca\uff09*/ /* \u6240\u4ee5\u6211\u5df2\u7ecf\u6ce8\u91ca\u4e86\u5b83\u3002*/ i1 = 80; /* \u60f3\u60f3\u770b\uff1a\u8fd9\u91cc\u80fd\u7528 *pi = 80; \u6765\u4ee3\u66ff\u5417\uff1f\u53ef\u4ee5\uff0c\u8fd9\u91cc\u53ef\u4ee5\u901a\u8fc7*pi\u4fee\u6539i1\u7684\u503c\u3002\uff08\u7b2c5\u884c\u7684\u6ce8\u91ca\uff09*/ /* \u8bf7\u81ea\u884c\u4e0e\u524d\u9762\u4e00\u4e2a\u4f8b\u5b50\u6bd4\u8f83\u3002 */ printf("%d", *pi); /* \u8f93\u51fa\u662f80 */ /* \u4ee3\u7801\u7ed3\u675f */ \u8bed\u4e49\u5206\u6790\uff1a \u770b\u4e86\u8fd9\u6bb5\u4ee3\u7801\uff0c\u4f60\u660e\u767d\u4e86\u4ec0\u4e48\uff1f\u6709\u6ca1\u6709\u53d1\u73b0pi\u503c\u662f\u4e0d\u80fd\u91cd\u65b0\u8d4b\u503c\u4fee\u6539\u4e86\u3002\u5b83\u53ea\u80fd\u6c38\u8fdc\u6307\u5411\u521d\u59cb\u5316\u65f6\u7684\u5185\u5b58\u5730\u5740\u4e86\u3002\u76f8\u53cd\uff0c\u8fd9\u6b21\u4f60\u53ef\u4ee5\u901a\u8fc7*pi\u6765\u4fee\u6539i1\u7684\u503c\u4e86\u3002\u4e0e\u524d\u4e00\u4e2a\u4f8b\u5b50\u5bf9\u7167\u4e00\u4e0b\u5427\uff01\u770b\u4ee5\u4e0b\u7684\u4e24\u70b9\u5206\u6790\uff1a 1\uff09pi\u56e0\u4e3a\u6709\u4e86const \u7684\u4fee\u9970\uff0c\u6240\u4ee5\u53ea\u662f\u4e00\u4e2a\u6307\u9488\u5e38\u91cf\uff1a\u4e5f\u5c31\u662f\u8bf4pi\u503c\u662f\u4e0d\u53ef\u4fee\u6539\u7684\uff08\u5373pi\u4e0d\u53ef\u4ee5\u91cd\u65b0\u6307\u5411i2\u8fd9\u4e2a\u53d8\u91cf\u4e86\uff09\uff08\u8bf7\u770b\u7b2c4\u884c\u7684\u6ce8\u91ca\uff09\u3002 2\uff09\u6574\u4e2a*pi\u7684\u524d\u9762\u6ca1\u6709const \u7684\u4fee\u9970\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c*pi\u662f\u53d8\u91cf\u800c\u4e0d\u662f\u5e38\u91cf\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7*pi\u6765\u4fee\u6539\u5b83\u6240\u6307\u5185\u5b58i1\u7684\u503c\uff08\u8bf7\u770b\u7b2c5\u884c\u7684\u6ce8\u91ca\uff09\u3002 \u603b\u4e4b\u4e00\u53e5\u8bdd\uff0c\u8fd9\u6b21\u7684pi\u662f\u4e00\u4e2a\u6307\u5411int\u53d8\u91cf\u7c7b\u578b\u6570\u636e\u7684\u6307\u9488\u5e38\u91cf\u3002 \u6211\u6700\u540e\u603b\u7ed3\u4e24\u53e5\uff1a 1\uff09 \u5982\u679cconst \u4fee\u9970\u5728*pi\u524d\uff0c\u5219\u4e0d\u80fd\u6539\u7684\u662f*pi(\u5373\u4e0d\u80fd\u7c7b\u4f3c\u8fd9\u6837\uff1a*pi=50;\u8d4b\u503c)\u800c\u4e0d\u662f\u6307pi\u3002 2\uff09 \u5982\u679cconst \u662f\u76f4\u63a5\u5199\u5728pi\u524d\uff0c\u5219pi\u4e0d\u80fd\u6539(\u5373\u4e0d\u80fd\u7c7b\u4f3c\u8fd9\u6837\uff1api=&i;\u8d4b\u503c)\u3002 \u8bf7\u4f60\u52a1\u5fc5\u5148\u8bb0\u4f4f\u8fd9\u4e24\u70b9\uff0c\u76f8\u4fe1\u4f60\u4e00\u5b9a\u4e0d\u4f1a\u518d\u88ab\u5b83\u4eec\u7ed9\u641e\u7cca\u4e86\u3002\u73b0\u5728\u518d\u770b\u8fd9\u4e24\u4e2a\u58f0\u660e\u8bed\u53e5int const *pi\u548cint *const pi\u65f6\uff0c\u5475\u5475\uff0c\u4f60\u4f1a\u5934\u660f\u8111\u80c0\u8fd8\u662f\u5f88\u8f7b\u677e\u60ec\u610f\uff1f\u5b83\u4eec\u5404\u81ea\u58f0\u660e\u7684pi\u5206\u522b\u80fd\u4fee\u6539\u4ec0\u4e48\uff0c\u4e0d\u80fd\u4fee\u6539\u4ec0\u4e48\uff1f\u518d\u95ee\u95ee\u81ea\u5df1\uff0c\u628a\u4f60\u7684\u7406\u89e3\u544a\u8bc9\u6211\u5427\uff0c\u53ef\u4ee5\u53d1\u5e16\u4e5f\u53ef\u4ee5\u53d1\u5230\u6211\u7684\u90ae\u7bb1\uff08\u6211\u7684\u90ae\[email protected]\uff09\uff01\u6211\u4e00\u5b9a\u4f1a\u7b54\u590d\u7684\u3002 \u56db\u3001\u8865\u5145\u4e09\u79cd\u60c5\u51b5 \u8fd9\u91cc\uff0c\u6211\u518d\u8865\u5145\u4ee5\u4e0b\u4e09\u79cd\u60c5\u51b5\u3002\u5176\u5b9e\u53ea\u8981\u4e0a\u9762\u7684\u8bed\u4e49\u641e\u6e05\u695a\u4e86\uff0c\u8fd9\u4e09\u79cd\u60c5\u51b5\u4e5f\u5c31\u5df2\u7ecf\u88ab\u5305\u542b\u4e86\u3002\u4e0d\u8fc7\u4f5c\u4e3a\u4e09\u79cd\u5177\u4f53\u7684\u5f62\u5f0f\uff0c\u6211\u8fd8\u662f\u7b80\u5355\u63d0\u4e00\u4e0b\u5427\uff01 \u60c5\u51b5\u4e00\uff1aint *pi\u6307\u9488\u6307\u5411const int i\u5e38\u91cf\u7684\u60c5\u51b5 /* begin */ const int i1 = 40; int *pi; pi = &i1; /* \u8fd9\u6837\u53ef\u4ee5\u5417\uff1f\u4e0d\u884c\uff0cVC\u4e0b\u662f\u7f16\u8bd1\u9519\u3002*/ /* const int \u7c7b\u578b\u7684i1\u7684\u5730\u5740\u662f\u4e0d\u80fd\u8d4b\u503c\u7ed9\u6307\u5411int \u7c7b\u578b\u5730\u5740\u7684\u6307\u9488pi\u7684\u3002\u5426\u5219pi\u5c82\u4e0d\u662f\u80fd\u4fee\u6539i1\u7684\u503c\u4e86\u5417\uff01*/ pi = (int *) &i1; /* \u8fd9\u6837\u53ef\u4ee5\u5417\uff1f\u5f3a\u5236\u7c7b\u578b\u8f6c\u6362\u53ef\u662fC\u6240\u652f\u6301\u7684\u3002*/ /* VC\u4e0b\u7f16\u8bd1\u901a\u8fc7\uff0c\u4f46\u662f\u4ecd\u4e0d\u80fd\u901a\u8fc7 *pi = 80\u6765\u4fee\u6539i1\u7684\u503c\u3002\u53bb\u8bd5\u8bd5\u5427\uff01\u770b\u770b\u5177\u4f53\u7684\u600e\u6837\u3002*/ /* end */ \u60c5\u51b5\u4e8c\uff1aconst int *pi\u6307\u9488\u6307\u5411const int i1\u7684\u60c5\u51b5 /* begin */ const int i1=40; const int * pi; pi=&i1;/* \u4e24\u4e2a\u7c7b\u578b\u76f8\u540c\uff0c\u53ef\u4ee5\u8fd9\u6837\u8d4b\u503c\u3002\u5f88\u663e\u7136\uff0ci1\u7684\u503c\u65e0\u8bba\u662f\u901a\u8fc7pi\u8fd8\u662fi1\u90fd\u4e0d\u80fd\u4fee\u6539\u7684\u3002 */ /* end */ \u60c5\u51b5\u4e09\uff1a\u7528const int *const pi\u58f0\u660e\u7684\u6307\u9488 /* begin */ int i; const int * const pi=&i; /*\u4f60\u80fd\u60f3\u8c61pi\u80fd\u591f\u4f5c\u4ec0\u4e48\u64cd\u4f5c\u5417\uff1fpi\u503c\u4e0d\u80fd\u6539\uff0c\u4e5f\u4e0d\u80fd\u901a\u8fc7pi\u4fee\u6539i\u7684\u503c\u3002\u56e0\u4e3a\u4e0d\u7ba1\u662f*pi\u8fd8\u662fpi\u90fd\u662fconst\u7684\u3002 */ /* end */

int a=5; //a\u53ef\u4ee5\u88ab\u91cd\u65b0\u8d4b\u503c
const int b=5; //b\u4e0d\u53ef\u4ee5\u88ab\u91cd\u65b0\u8d4b\u503c,\u5982\u679c\u6709\u88ab\u8d4b\u503c\u60c5\u51b5\u4f1a\u62a5\u9519
\u5bf9\u4e8e\u4e00\u4e9b\u5e38\u91cf\u6765\u8bf4\u90fd\u52a0const,\u907f\u514d\u81ea\u5df1\u5199\u7a0b\u5e8f\u65f6\u5019\u8bef\u64cd\u4f5c.

一、const int 和int 的区别

1、返回值

const int & 是返回这个数值的一个常量的引用。

而int 是返回这个数值的一个拷贝。

int 是进行拷贝构造,而const int & 是返回的引用。拷贝构造更消耗时间,与此同时还用析构函数。因为产生了一个拷贝,你就可以轻易地修改拷贝的内容。

2、取指针

const int类型一旦定义以后就不能修改,int类型是随时可以修改的。

在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改。

听起来这像宏,其实这确实就是用来取代宏的: #define PI 3.14 const float Pi = 3.14; 如果你的代码里用到了100次PI(宏),你的代码中会保存100个3.14这个常数。

鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(const float),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了。

特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。

3、内容

constint* p; //p可变,p指向的内容不可变,int const* p; //p可变,p指向的内容不可变。 int* const p; //p不可变,p指向的内容可变 const int* const p; //p和p指向的内容都不可变。

二、const的作用:

1、可以定义const常量,具有不可变性。 

例如:const int Max=100; Max++会产生错误; 

2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。

例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改; 

3、可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!

如1中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!

4、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 

例如: void f(const int i) { i=10;//error! } 

5、可以节省空间,避免不必要的内存分配。

扩展资料

当const修饰的是指针类型,那么指针的值就不能改变,即不能指向其他地址,但是可以通过指针修改其指向地址里面的值。

当const修饰时指针指向的类型时候,那么指针被指向其他地址,但是不能通过指针修改指针里面的值。

1)先从const int i说起。

使用const修饰的i我们称之为符号常量。即,i不能在其他地方被重新赋值了。注意:const int i与int const i是等价的,相同的,即const与int的位置无所谓。

2)const int *p

看例子:

int i1=30;

int i2=40;

const int *p=&i1;

p=&i2;  //此处,p可以在任何时候重新赋值一个新的内存地址。

i2=80;  //这里能用*p=80来代替吗?答案是不能

printf("%d",*p);  //输出80

分析:p的值是可以被修改的,即它可以重新指向另一个地址。但是不能通过*p来修改i2的值。

首先,const修饰的是整个*p(注意,是*p而不是p),所以*p是常量,是不能被赋值的。虽然p所指的i2是变量而不是常量;

其次,p前并没有用const修饰,所以p是指针变量。能被赋值重新指向另一个内存地址。


参考资料:百度百科——const



一、区别如下:

1、int定义的量是变量,它的值可以更改;而const int 定义的是一个常量,它的值不可以更改。

2、int在定义的时候,不需要初始化,而const int 在定义的时候必须初始化;

二、const的作用:把对象转换成一个常量

拓展资料

const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。

参考资料:百度百科:CONST



1、内容不同

constint* p; //p可变,p指向的内容不可变,int const* p; //p可变,p指向的内容不可变。 int* const p; //p不可变,p指向的内容可变 const int* const p; //p和p指向的内容都不可变。

2、取指针

const int类型一旦定义以后就不能修改,int类型是随时可以修改的。

3、返回值

const int是返回这个数值的一个常量的引用。

而int是返回这个数值的一个拷贝。

const作用:

1、可以定义const常量,具有不可变性。

例如:const int Max=100; Max++会产生错误。

2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。

例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改。

3、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。

扩展资料:

const 和指针一起使用会有几种不同的顺序,如下所示:

1、const int *p1;

2、int const *p2;

3、int * const p3;

在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。

当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:

1、const int * const p4;

2、int const * const p5;



怎么会有人说没有区别的。。没区别还要这个东西干蛋。。
在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实就是用来取代宏的:
#define PI 3.14
const float Pi = 3.14;
如果你的代码里用到了100次PI(宏),你的代码中会保存100个3.14这个常数,鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(const float),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了,特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。
清楚了const的用法,const int和int的区别就很简单,int i里的i可以被更改,是真正的变量,const int i的i不可以被更改,是有着变量外衣的常数。

两个没有区别,但当const修饰的是指针时就有区别.
const int* a
int* const a ;
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量

扩展阅读:const int a 10 ... 关于定义const int p ... int a const 5 ... const int maxn ... const int什么意思 ... c++编程 ... const int &item ... int const p含义 ... const int和int的区别 ...

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