ä¸) 常éæéã
常éæ¯å½¢å®¹è¯ï¼æéæ¯åè¯ï¼ä»¥æé为ä¸å¿çä¸ä¸ªåæ£ç»æçè¯ãè¿æ ·çï¼å¸¸éæéæ¬è´¨æ¯æéï¼å¸¸é修饰å®ï¼è¡¨ç¤ºè¿ä¸ªæéä¹æ¯ä¸ä¸ªæå常éçæéï¼åéï¼ã
æéæåç对象æ¯å¸¸éï¼é£ä¹è¿ä¸ªå¯¹è±¡ä¸è½è¢«æ´æ¹ã
å¨C/C++ä¸ï¼å¸¸éæéæ¯è¿æ ·å£°æçï¼
1ï¼const int *p;
2ï¼int const *p;
常éæéç使ç¨è¦æ³¨æï¼æéæåç对象ä¸è½éè¿è¿ä¸ªæéæ¥ä¿®æ¹ï¼å¯æ¯ä»ç¶å¯ä»¥éè¿åæ¥ç声æä¿®æ¹ï¼ä¹å°±æ¯è¯´å¸¸éæéå¯ä»¥è¢«èµå¼ä¸ºåéçå°åï¼ä¹æ以å«å常éæéï¼æ¯éå¶äºéè¿è¿ä¸ªæéä¿®æ¹åéçå¼ãä¾å¦ï¼
int a = 5;
const int b = 8;
const int *c = &a; // è¿æ¯åæ³çï¼éæ³çæ¯å¯¹cç使ç¨
*c = 6; // éæ³ï¼ä½å¯ä»¥è¿æ ·ä¿®æ¹cæåç对象çå¼ï¼a = 6;
const int *d = &b; // bæ¯å¸¸éï¼då¯ä»¥æåbï¼d被èµå¼ä¸ºbçå°åæ¯åæ³ç
ç»å¿çæåå¨ä½¿ç¨å符串å¤çå½æ°çæ¶åï¼åºè¯¥ä¼æ³¨æå°è¿äºå½æ°ç声æãå®ä»¬çåæ°ä¸è¬å£°æ为常éæéãä¾å¦ï¼å符串æ¯è¾å½æ°ç声ææ¯è¿æ ·çï¼
int strcmp(const char *str1, const char *str2);
å¯æ¯è¿ä¸ªå½æ°å´å¯ä»¥æ¥æ¶é常éå符串ãä¾å¦è¿æ®µç¨åºï¼
char *str1, *str2;
str1 = "abcde1234";
str2 = "bcde";
if(strcmp(str1, str2) == 0)
{
printf("str1 equals str2.");
}
str1åstr2çå
容æ¾ç¶æ¯å¯ä»¥æ´æ¹çï¼ä¾å¦å¯ä»¥ä½¿ç¨âstr1[0] = x;âè¿æ ·çè¯å¥æstr1çå
容ç±âabcde1234âå为âxbcde1234âãå 为å½æ°çåæ°å£°æç¨äºå¸¸éæéçå½¢å¼ï¼å°±ä¿è¯äºå¨å½æ°å
é¨ï¼é£ 个常éä¸è¢«æ´æ¹ãä¹å°±æ¯è¯´ï¼å¯¹str1åstr2çå
容æ´æ¹çæä½å¨å½æ°å
é¨æ¯ä¸è¢«å
许çãï¼å°±ç®åçåºç¨æ¥çï¼æè§å¾è®¾ç½®å¸¸éæéå°±æ¯ä¸ºå½æ°åæ°å£°æå å¤çï¼ä¸ç¶è¿çä¸ç¥éç¨å¨ä»ä¹å°æ¹å¢ï¼åµåµï¼ï¼
è½ç¶å¸¸éæéæåç对象ä¸è½ååï¼å¯æ¯å 为常éæéæ¯ä¸ä¸ªåéï¼å æ¤ï¼å¸¸éæéå¯ä»¥ä¸è¢«èµåå§å¼ï¼ä¸å¯ä»¥è¢«éæ°èµå¼ãä¾å¦ï¼
const int a = 12;
const int b = 15;
const int *c = &a; // 为äºç®å代ç ï¼å¾å¤äººä¹ æ¯èµåå§å¼
const int *d;
d = &a; // è¿æ ·å½ç¶æ¯å¯ä»¥ç
c = &b; // è½ç¶cå·²ç»è¢«èµäºåå§å¼ï¼å¯æ¯ä»ç¶å¯ä»¥æåå¦ä¸ä¸ªåé
ç¹ç¹æ¯ï¼constçä½ç½®å¨æé声æè¿ç®ç¬¦*ç左侧ãåªè¦constä½äº*ç左侧ï¼æ 论å®å¨ç±»ååç左边æå³è¾¹ï¼é½å£°æäºä¸ä¸ªæå常éçæéï¼å«å常éæéã
å¯ä»¥è¿ä¹æ³ï¼*左侧æ¯å¸¸éï¼æéæåç对象æ¯å¸¸éã
äº) æé常é
æéæ¯å½¢å®¹è¯ï¼å¸¸éæ¯åè¯ãè¿åæ¯ä»¥å¸¸é为ä¸å¿çä¸ä¸ªåæ£ç»æçè¯ãé£ä¹ï¼æé常éçæ¬è´¨æ¯ä¸ä¸ªå¸¸éï¼èç¨æé修饰å®ï¼é£ä¹è¯´æè¿ä¸ªå¸¸éçå¼åºè¯¥æ¯ä¸ä¸ªæéã
æé常éçå¼æ¯æéï¼è¿ä¸ªå¼å 为æ¯å¸¸éï¼æ以ä¸è½è¢«èµå¼ã
å¨C/C++ä¸ï¼æé常éè¿æ ·å£°æï¼
int a;
int *const b = &a; //constæ¾å¨æé声ææä½ç¬¦çå³ä¾§
åªè¦constä½äºæé声ææä½ç¬¦å³ä¾§ï¼å°±è¡¨æ声æç对象æ¯ä¸ä¸ªå¸¸éï¼ä¸å®çå
容æ¯ä¸ä¸ªæéï¼ä¹å°±æ¯ä¸ä¸ªå°åãä¸é¢ç声æå¯ä»¥è¿ä¹è¯»ï¼å£°æäºä¸ä¸ªå¸¸ébï¼å®çå¼æ¯åéaçå°åï¼åéaçå°åï¼ä¸å°±æ¯æååéaçæéåï¼ã
å 为æé常éæ¯ä¸ä¸ªå¸¸éï¼å¨å£°æçæ¶åä¸å®è¦ç»å®èµåå§å¼ãä¸æ¦èµå¼ï¼ä»¥åè¿ä¸ªå¸¸éåä¹ä¸è½æåå«çå°åã
è½ç¶æé常éçå¼ä¸è½åï¼å¯æ¯å®æåç对象æ¯å¯åçï¼å 为æ们并没æéå¶å®æåç对象æ¯å¸¸éã
å æ¤ï¼æè¿ä¹æ®µç¨åºï¼
char *a = "abcde1234";
char *b = "bcde";
char *const c = &a;
ä¸é¢çæä½æ¯å¯ä»¥çã
a[0] = 'x'; // æ们并没æéå¶a为常éæéï¼æå常éçæéï¼
æè
*c[0] = 'x' // ä¸ä¸é¢çæä½ä¸è´
温馨提示:答案为网友推荐,仅供参考