constまとめ1

593 ワード

ポインタconstについて
ケース1:
int i = 10;
const int* p = &i;
*p = 10 ;
//error C3892: “p”:        

ケース2:
		int i = 10;
		int* const p = &i;
		p++;
		//error C3892: “p”:        

まとめ:コンパイラはエラーの報告を求めます.なぜならconst int*定義ポインタが指す内容は定数であり、int*constは定義ポインタが定数であるからです.
 
テクニック:constは*の左側に修飾内容、constは*の右側に修飾ポインタです.
 
思考:状況1は内容を定数として定義し,iを修正することでiの値を変えることができるか,すなわちconst int*でpを定義し,iに影響を及ぼすかどうかを問う.
 
		int i = 10;
		const int* p = &i;
		i = 11;
//    

結論:const int*はpを定義し、iを指し、iには何の影響もない.