定義ポインタp以下の分析。
int型の TMP = 5 ; int型 * p =&TMP; const int型 * p =&TMP; int型 のconst * p =&TMP; int型 * のconst p =&TMP; const int型 * constの P =&TMP; int型 のconst * のconst p =&TMP;
文献によれば、実施の形態を区別右から左へ読み取るを使用することができます。
最初は、通常のポインタ通常INT変数です。
第二及び第三の同一は、共通ポインタのconst int型の変数です。
CONSTは、第四のポインタ通常int型変数です。
第五及び第六のと同様に、CONSTポインタのconst int型の変数です。
次のようにテストコードは次のようになります。
1つの#include <iostreamの> 2 3 4 ボイドTEST1(){ 5 int型 TMP = 5 。 6 のint * pを=&TMP; 7 のstd :: coutの<< " test1の:: p値:" << * P << はstd ::てendl; 8 // * pとpは一般的な変数です。 9 * P = 10。 // OK 10 int型 TMP1 = 9 ; 11 、P =&TMP1。 // OK 12 } 13 14 のボイドTEST2(){ 15 のint TMP = 5 。 16 のconst int型 * p =&TMP; 17 のstd :: coutの<< " TEST2 :: p値:" << * P << はstd ::てendl; 18 // * Pは読み取り専用で、pは一般的な変数です。 19 // * P = 10; // エラー 20 INT TMP1 = 9 ; 21 、P =&TMP1。 // OK 22 } 23 24 // TEST2と同じ 25 ボイドTEST3(){ 26 int型の TMP = 5 ; 27 int型 のconst * p =&TMP; 28 のstd :: coutの<< " TEST3 :: p値:" << * P << はstd ::てendl; 29 // * Pは読み取り専用で、pは一般的な変数です。 30 // * P = 10; // エラー 31 INT TMP1 = 9 ; 32 P =&TMP1。 // OK 33 } 34 35 空隙TEST4(){ 36 のint TMP = 5 。 37 INT* のconst p =&TMP; 38 のstd :: coutの<< " TEST4 :: p値:" << * P << はstd ::てendl; 39 // pが読み取り専用で、* pは一般的な変数です。 40 * P = 10。 // OK 41 // int型TMP1 = 9; 42 // p =&TMP1。 // エラー 43 } 44 45 空隙TEST5(){ 46 のconst int型 TMP = 5 。 47 のconst int型 * のconst p =&TMP; 48 のstd :: coutの<< " TEST5 :: p値:" << * P << はstd ::てendl; 49 // pが読み取り専用で、* pはまた、読み取り専用です。 50 // * P = 10; // エラー 51 // INT TMP1 = 9。 52 // p =&TMP1。 // エラー 53 } 54 55 56 // TEST5と同じ 57 空隙TEST6(){ 58 のconst int型 TMP = 5 。 59 int型 のconst * constのP =&TMP; 60 のstd :: coutの<< " TEST6 :: p値:" << * P << はstd ::てendl; 61 // pが読み取り専用で、* pはまた、読み取り専用です。 62 // * P = 10; // エラー 63 // int型TMP1 = 9; 64 // p =&TMP1。 // エラー 65 } 66 67 int型のmain(){ 68 のstd :: coutの<< " こんにちは、世界!" << はstd ::てendl; 69 TEST1(); 70 TEST2()。 71 TEST3(); 72 TEST4()。 73 TEST5()。 74 TEST6()。 75 リターン 0 ; 76 }
参考文献:
(1)https://www.cnblogs.com/bencai/p/8888760.html