如题所述
C++ä¸constå ³é®åæ¯constantç缩åï¼é常翻è¯ä¸ºå¸¸éã常æ°çï¼æäºæåä¸çå°constå ³é®å马ä¸å°±æ³å°äºå¸¸éãäºå®ä¸å¨Cè¯è¨ä¸conståè½å¾å¼ºå¤§ï¼å®å¯ä»¥ä¿®é¥°åéãæ°ç»ãæéãå½æ°åæ°çã
1ã 修饰åéï¼
Cè¯è¨ä¸éç¨const修饰åéï¼åè½æ¯å¯¹åé声æ为åªè¯»ç¹æ§ï¼å¹¶ä¿æ¤åéå¼ä»¥é²è¢«ä¿®æ¹ã举ä¾è¯´æå¦ä¸ï¼
const int i = 5;
ä¸é¢è¿ä¸ªä¾å表æï¼åéiå ·æåªè¯»ç¹æ§ï¼ä¸è½å¤è¢«æ´æ¹ï¼è¥æ³å¯¹iéæ°èµå¼ï¼å¦i = 10ï¼åæ¯é误çã
å¼å¾æ³¨æçæ¯ï¼å®ä¹åéçåæ¶ï¼å¿ é¡»åå§åãå®ä¹å½¢å¼ä¹å¯ä»¥åæint const i=5ï¼åæ ·æ£ç¡®ã
æ¤å¤ï¼const修饰åéè¿èµ·å°äºè约空é´çç®çï¼é常ç¼è¯å¨å¹¶ä¸ç»æ®éconståªè¯»åéåé 空é´ï¼èæ¯å°å®ä»¬ä¿åå°ç¬¦å·è¡¨ä¸ï¼æ é读åå åæä½ï¼ç¨åºæ§è¡æçä¹ä¼æé«ã
2ã 修饰æ°ç»
Cè¯è¨ä¸constè¿å¯ä»¥ä¿®é¥°æ°ç»ï¼ä¸¾ä¾å¦ä¸ï¼
const int array[5] = {1,2,3,4,5};
array[0] = array[0]+1; //é误
æ°ç»å ç´ ä¸åé类似ï¼å ·æåªè¯»å±æ§ï¼ä¸è½è¢«æ´æ¹ï¼ä¸æ¦æ´æ¹ï¼å¦ç¨åºå°ä¼æ¥éã
3ã 修饰æé
Cè¯è¨ä¸const修饰æéè¦ç¹å«æ³¨æï¼å ±æ两ç§å½¢å¼ï¼ä¸ç§æ¯ç¨æ¥éå®æå空é´çå¼ä¸è½ä¿®æ¹ï¼å¦ä¸ç§æ¯éå®æéä¸å¯æ´æ¹ã举ä¾è¯´æå¦ä¸ï¼
int i = 5;
int j = 6;
int k = 7;
const int * p1 = &i; //å®ä¹1
int * const p2 =&j; //å®ä¹2
ä¸é¢å®ä¹äºä¸¤ä¸ªæép1åp2ã
å¨å®ä¹1ä¸constéå®çæ¯*p1ï¼å³å ¶æå空é´çå¼ä¸å¯æ¹åï¼è¥æ¹åå ¶æå空é´çå¼å¦*p1=20ï¼åç¨åºä¼æ¥éï¼ä½p1çå¼æ¯å¯ä»¥æ¹åçï¼å¯¹p1éæ°èµå¼å¦p1=&kæ¯æ²¡æä»»ä½é®é¢çã
å¨å®ä¹2ä¸constéå®çæ¯æép2ï¼è¥æ¹åp2çå¼å¦p2=&kï¼ç¨åºå°ä¼æ¥éï¼ä½*p2ï¼å³å ¶ææå空é´çå¼å¯ä»¥æ¹åï¼å¦*p2=80æ¯æ²¡æé®é¢çï¼ç¨åºæ£å¸¸æ§è¡ã
4ã 修饰å½æ°åæ°
constå ³é®å修饰å½æ°åæ°ï¼å¯¹åæ°èµ·éå®ä½ç¨ï¼é²æ¢å ¶å¨å½æ°å é¨è¢«ä¿®æ¹ãæéå®çå½æ°åæ°å¯ä»¥æ¯æ®éåéï¼ä¹å¯ä»¥æ¯æéåéã举ä¾å¦ä¸ï¼
void fun1(const int i)
{
å ¶å®è¯å¥
â¦â¦
i++; //对içå¼è¿è¡äºä¿®æ¹ï¼ç¨åºæ¥é
å ¶å®è¯å¥
}
void fun2(const int *p)
{
å ¶å®è¯å¥
â¦â¦
(*p)++; //对pæå空é´çå¼è¿è¡äºä¿®æ¹ï¼ç¨åºæ¥é
å ¶å®è¯å¥
}