constまとめ1
593 ワード
ポインタconstについて
ケース1:
ケース2:
まとめ:コンパイラはエラーの報告を求めます.なぜならconst int*定義ポインタが指す内容は定数であり、int*constは定義ポインタが定数であるからです.
テクニック:constは*の左側に修飾内容、constは*の右側に修飾ポインタです.
思考:状況1は内容を定数として定義し,iを修正することでiの値を変えることができるか,すなわちconst int*でpを定義し,iに影響を及ぼすかどうかを問う.
結論:const int*はpを定義し、iを指し、iには何の影響もない.
ケース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には何の影響もない.