const.c
#include <stdio.h>
#define PR(a) printf("%" #a " = " , a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3;
const int * hoge4;
int const * hoge5;
const int * const hoge6;
const int const * hoge7;
hoge2= &hoge1;
hoge3 = &hoge1;
hoge4 = &hoge1;
hoge5 = &hoge1;
hoge6 = &hoge1;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge3 = &hoge2;
hoge4 = &hoge2;
hoge5 = &hoge2;
hoge6 = &hoge2;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge4 = &hoge3;
hoge5 = &hoge3;
hoge6 = &hoge3;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge3 = &hoge4;
hoge5 = &hoge4;
hoge6 = &hoge4;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge3 = &hoge5;
hoge4 = &hoge5;
hoge6 = &hoge5;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge3 = &hoge6;
hoge4 = &hoge6;
hoge5 = &hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
}
compile
docker/ubuntu
# gcc const.c
const.c: In function 'main':
const.c:15:7: error: assignment of read-only variable 'hoge3'
15 | hoge3 = &hoge1;
| ^
const.c:18:7: error: assignment of read-only variable 'hoge6'
18 | hoge6 = &hoge1;
| ^
const.c:26:7: error: assignment of read-only variable 'hoge3'
26 | hoge3 = &hoge2;
| ^
const.c:27:7: warning: assignment to 'const int *' from incompatible pointer type 'int **' [-Wincompatible-pointer-types]
27 | hoge4 = &hoge2;
| ^
const.c:28:7: warning: assignment to 'const int *' from incompatible pointer type 'int **' [-Wincompatible-pointer-types]
28 | hoge5 = &hoge2;
| ^
const.c:29:7: error: assignment of read-only variable 'hoge6'
29 | hoge6 = &hoge2;
| ^
const.c:34:7: warning: assignment to 'const int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
34 | hoge4 = &hoge3;
| ^
const.c:35:7: warning: assignment to 'const int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
35 | hoge5 = &hoge3;
| ^
const.c:36:7: error: assignment of read-only variable 'hoge6'
36 | hoge6 = &hoge3;
| ^
const.c:41:7: error: assignment of read-only variable 'hoge3'
41 | hoge3 = &hoge4;
| ^
const.c:42:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
42 | hoge5 = &hoge4;
| ^
const.c:43:7: error: assignment of read-only variable 'hoge6'
43 | hoge6 = &hoge4;
| ^
const.c:48:7: error: assignment of read-only variable 'hoge3'
48 | hoge3 = &hoge5;
| ^
const.c:49:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
49 | hoge4 = &hoge5;
| ^
const.c:50:7: error: assignment of read-only variable 'hoge6'
50 | hoge6 = &hoge5;
| ^
const.c:55:7: error: assignment of read-only variable 'hoge3'
55 | hoge3 = &hoge6;
| ^
const.c:56:7: warning: assignment to 'const int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
56 | hoge4 = &hoge6;
| ^
const.c:57:7: warning: assignment to 'const int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
57 | hoge5 = &hoge6;
| ^
const2.c
#include <stdio.h>
#define PR(a) printf("%" #a " = " , a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=&hoge3;
const int const * hoge7;
hoge2= &hoge1;
hoge4 = &hoge1;
hoge5 = &hoge1;
hoge7 = &hoge1;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge4 = &hoge2;
hoge5 = &hoge2;
hoge7 = &hoge2;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = &hoge3;
hoge4 = &hoge3;
hoge5 = &hoge3;
hoge7 = &hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = &hoge4;
hoge5 = &hoge4;
hoge7 = &hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
hoge2 = &hoge5;
hoge4 = &hoge5;
hoge7 = &hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
hoge2 = &hoge6;
hoge4 = &hoge6;
hoge5 = &hoge6;
hoge7 = &hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge2 = &hoge7;
hoge4 = &hoge7;
hoge5 = &hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
}
compile
docker/ubuntu
# gcc const2.c
const2.c: In function 'main':
const2.c:11:25: warning: initialization of 'const int * const' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
11 | const int * const hoge6=&hoge3;
| ^
const2.c:25:7: warning: assignment to 'const int *' from incompatible pointer type 'int **' [-Wincompatible-pointer-types]
25 | hoge4 = &hoge2;
| ^
const2.c:26:7: warning: assignment to 'const int *' from incompatible pointer type 'int **' [-Wincompatible-pointer-types]
26 | hoge5 = &hoge2;
| ^
const2.c:27:7: warning: assignment to 'const int *' from incompatible pointer type 'int **' [-Wincompatible-pointer-types]
27 | hoge7 = &hoge2;
| ^
const2.c:32:7: warning: assignment to 'int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
32 | hoge2 = &hoge3;
| ^
const2.c:33:7: warning: assignment to 'const int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
33 | hoge4 = &hoge3;
| ^
const2.c:34:7: warning: assignment to 'const int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
34 | hoge5 = &hoge3;
| ^
const2.c:35:7: warning: assignment to 'const int *' from incompatible pointer type 'int * const*' [-Wincompatible-pointer-types]
35 | hoge7 = &hoge3;
| ^
const2.c:40:7: warning: assignment to 'int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
40 | hoge2 = &hoge4;
| ^
const2.c:41:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
41 | hoge5 = &hoge4;
| ^
const2.c:42:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
42 | hoge7 = &hoge4;
| ^
const2.c:46:7: warning: assignment to 'int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
46 | hoge2 = &hoge5;
| ^
const2.c:47:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
47 | hoge4 = &hoge5;
| ^
const2.c:48:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
48 | hoge7 = &hoge5;
| ^
const2.c:52:7: warning: assignment to 'int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
52 | hoge2 = &hoge6;
| ^
const2.c:53:7: warning: assignment to 'const int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
53 | hoge4 = &hoge6;
| ^
const2.c:54:7: warning: assignment to 'const int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
54 | hoge5 = &hoge6;
| ^
const2.c:55:7: warning: assignment to 'const int *' from incompatible pointer type 'const int * const*' [-Wincompatible-pointer-types]
55 | hoge7 = &hoge6;
| ^
const2.c:60:7: warning: assignment to 'int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
60 | hoge2 = &hoge7;
| ^
const2.c:61:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
61 | hoge4 = &hoge7;
| ^
const2.c:62:7: warning: assignment to 'const int *' from incompatible pointer type 'const int **' [-Wincompatible-pointer-types]
62 | hoge5 = &hoge7;
| ^
const3.c
#include <stdio.h>
#define PR(a) printf("%" #a " = " , a,¥n)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3;
const int const * hoge7;
hoge2= &hoge1;
hoge4 = &hoge1;
hoge5 = &hoge1;
hoge7 = &hoge1;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge4 = hoge2;
hoge5 = hoge2;
hoge7 = hoge2;
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
hoge7 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge4;
hoge5 = hoge4;
hoge7 = hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
hoge2 = hoge5;
hoge4 = hoge5;
hoge7 = hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
hoge2 = hoge6;
hoge4 = hoge6;
hoge5 = hoge6;
hoge7 = hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge2 = hoge7;
hoge4 = hoge7;
hoge5 = hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
}
docker/ubuntu
# gcc const3.c
const3.c: In function 'main':
const3.c:39:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
39 | hoge2 = hoge4;
| ^
const3.c:45:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
45 | hoge2 = hoge5;
| ^
const3.c:51:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
51 | hoge2 = hoge6;
| ^
const3.c:59:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
59 | hoge2 = hoge7;
| ^
const4.c
#include <stdio.h>
#define PR(a) printf( #a " = %d \n',a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3;
const int const * hoge7;
hoge2= &hoge1;
hoge4 = &hoge1;
hoge5 = &hoge1;
hoge7 = &hoge1;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge4 = hoge2;
hoge5 = hoge2;
hoge7 = hoge2;
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
hoge7 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge4;
hoge5 = hoge4;
hoge7 = hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
hoge2 = hoge5;
hoge4 = hoge5;
hoge7 = hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
hoge2 = hoge6;
hoge4 = hoge6;
hoge5 = hoge6;
hoge7 = hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge2 = hoge7;
hoge4 = hoge7;
hoge5 = hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
}
docker/ubuntu
# gcc const4.c
const3.c: In function 'main':
const3.c:39:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
39 | hoge2 = hoge4;
| ^
const3.c:45:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
45 | hoge2 = hoge5;
| ^
const3.c:51:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
51 | hoge2 = hoge6;
| ^
const3.c:59:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
59 | hoge2 = hoge7;
| ^
root@b3af5df58ca0:/# ./a.out
hoge1 = 1
hoge2 = 674864636
hoge3 = 674864636
hoge4 = 674864636
hoge5 = 674864636
hoge6 = 674864636
hoge4 = 674864636
hoge5 = 674864636
hoge7 = 674864636
hoge2 = 674864636
hoge4 = 674864636
hoge5 = 674864636
hoge7 = 674864636
hoge2 = 674864636
hoge5 = 674864636
hoge7 = 674864636
hoge2 = 674864636
hoge4 = 674864636
hoge7 = 674864636
hoge3 = 674864636
hoge4 = 674864636
hoge5 = 674864636
hoge6 = 674864636
hoge2 = 674864636
hoge4 = 674864636
hoge5 = 674864636
const5.c
#include <stdio.h>
#define PR(a) printf( #a " = %d \n',a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3-2;
const int const * hoge7;
hoge2= &hoge1-1;
hoge4 = &hoge1+1;
hoge5 = &hoge1+2;
hoge7 = &hoge1+3;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge4 = hoge2;
hoge5 = hoge2;
hoge7 = hoge2;
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
hoge7 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
hoge2 = hoge4;
hoge5 = hoge4;
hoge7 = hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
hoge2 = hoge5;
hoge4 = hoge5;
hoge7 = hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
hoge2 = hoge6;
hoge4 = hoge6;
hoge5 = hoge6;
hoge7 = hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
hoge2 = hoge7;
hoge4 = hoge7;
hoge5 = hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
}
docker/ubuntu
# gcc const5.c
const5.c: In function 'main':
const5.c:39:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
39 | hoge2 = hoge4;
| ^
const5.c:45:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
45 | hoge2 = hoge5;
| ^
const5.c:51:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
51 | hoge2 = hoge6;
| ^
const5.c:59:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
59 | hoge2 = hoge7;
| ^
root@b3af5df58ca0:/# ./a.out
hoge1 = 1
hoge2 = -1928507144
hoge3 = -1928507140
hoge4 = -1928507136
hoge5 = -1928507132
hoge6 = -1928507148
hoge4 = -1928507144
hoge5 = -1928507144
hoge7 = -1928507144
hoge2 = -1928507140
hoge4 = -1928507140
hoge5 = -1928507140
hoge7 = -1928507140
hoge2 = -1928507140
hoge5 = -1928507140
hoge7 = -1928507140
hoge2 = -1928507140
hoge4 = -1928507140
hoge7 = -1928507140
hoge3 = -1928507140
hoge4 = -1928507148
hoge5 = -1928507148
hoge6 = -1928507148
hoge2 = -1928507148
hoge4 = -1928507148
hoge5 = -1928507148
const7.c
#include <stdio.h>
#define PR(a) printf( #a " = %d \n",a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3-2;
const int const * hoge7;
hoge2= &hoge1-1;
hoge4 = &hoge1+1;
hoge5 = &hoge1+2;
hoge7 = &hoge1+3;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(hoge7);
PR(*hoge2);
PR(*hoge3);
PR(*hoge4);
PR(*hoge5);
PR(*hoge6);
PR(*hoge7);
hoge4 = hoge2;
hoge5 = hoge2;
hoge7 = hoge2;
PR(hoge4);
PR(hoge5);
PR(hoge7);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
hoge7 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
PR(*hoge2);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge4;
hoge5 = hoge4;
hoge7 = hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
PR(*hoge2);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge5;
hoge4 = hoge5;
hoge7 = hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
PR(*hoge2);
PR(*hoge4);
PR(*hoge7);
hoge2 = hoge6;
hoge4 = hoge6;
hoge5 = hoge6;
hoge7 = hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(*hoge3);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge7;
hoge4 = hoge7;
hoge5 = hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(*hoge2);
PR(*hoge4);
PR(*hoge5);
}
docker/ubuntu
# gcc const7.c
const7.c: In function 'main':
const7.c:52:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
52 | hoge2 = hoge4;
| ^
const7.c:61:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
61 | hoge2 = hoge5;
| ^
const7.c:70:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
70 | hoge2 = hoge6;
| ^
const7.c:82:7: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
82 | hoge2 = hoge7;
| ^
root@b3af5df58ca0:/# ./c.out
bash: ./c.out: No such file or directory
root@b3af5df58ca0:/# ./a.out
hoge1 = 1
hoge2 = 1240014920
hoge3 = 1240014924
hoge4 = 1240014928
hoge5 = 1240014932
hoge6 = 1240014916
hoge7 = 1240014936
*hoge2 = 4200213
*hoge3 = 1
*hoge4 = 1240014936
*hoge5 = 32767
*hoge6 = 0
*hoge7 = 1240014932
hoge4 = 1240014920
hoge5 = 1240014920
hoge7 = 1240014920
*hoge4 = 4200213
*hoge5 = 4200213
*hoge7 = 4200213
hoge2 = 1240014924
hoge4 = 1240014924
hoge5 = 1240014924
hoge7 = 1240014924
*hoge2 = 1
*hoge4 = 1
*hoge5 = 1
*hoge7 = 1
hoge2 = 1240014924
hoge5 = 1240014924
hoge7 = 1240014924
*hoge2 = 1
*hoge5 = 1
*hoge7 = 1
hoge2 = 1240014924
hoge4 = 1240014924
hoge7 = 1240014924
*hoge2 = 1
*hoge4 = 1
*hoge7 = 1
hoge3 = 1240014924
hoge4 = 1240014916
hoge5 = 1240014916
hoge6 = 1240014916
*hoge3 = 1
*hoge4 = 0
*hoge5 = 0
*hoge7 = 0
hoge2 = 1240014916
hoge4 = 1240014916
hoge5 = 1240014916
*hoge2 = 0
*hoge4 = 0
*hoge5 = 0
const7.cpp
#include <stdio.h>
#define PR(a) printf( #a " = %d \n",a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3-2;
const int const * hoge7;
hoge2= &hoge1-1;
hoge4 = &hoge1+1;
hoge5 = &hoge1+2;
hoge7 = &hoge1+3;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(hoge7);
PR(*hoge2);
PR(*hoge3);
PR(*hoge4);
PR(*hoge5);
PR(*hoge6);
PR(*hoge7);
hoge4 = hoge2;
hoge5 = hoge2;
hoge7 = hoge2;
PR(hoge4);
PR(hoge5);
PR(hoge7);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
hoge7 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(hoge7);
PR(*hoge2);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge4;
hoge5 = hoge4;
hoge7 = hoge4;
PR(hoge2);
PR(hoge5);
PR(hoge7);
PR(*hoge2);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge5;
hoge4 = hoge5;
hoge7 = hoge5;
PR(hoge2);
PR(hoge4);
PR(hoge7);
PR(*hoge2);
PR(*hoge4);
PR(*hoge7);
hoge2 = hoge6;
hoge4 = hoge6;
hoge5 = hoge6;
hoge7 = hoge6;
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(*hoge3);
PR(*hoge4);
PR(*hoge5);
PR(*hoge7);
hoge2 = hoge7;
hoge4 = hoge7;
hoge5 = hoge7;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(*hoge2);
PR(*hoge4);
PR(*hoge5);
}
# g++ const7.cpp
const7.cpp: In function 'int main()':
const7.cpp:12:11: error: duplicate 'const'
12 | const int const * hoge7;
| ^~~~~
| -----
const7.cpp:52:9: error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
52 | hoge2 = hoge4;
| ^~~~~
| |
| const int*
const7.cpp:61:9: error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
61 | hoge2 = hoge5;
| ^~~~~
| |
| const int*
const7.cpp:70:9: error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
70 | hoge2 = hoge6;
| ^~~~~
| |
| const int*
const7.cpp:82:9: error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
82 | hoge2 = hoge7;
| ^~~~~
| |
| const int*
const8.cpp:44:7: error: assignment of read-only variable 'hoge3'
44 | hoge3 = hoge4;
| ~~~~~~^~~~~~~
const8.cpp:50:7: error: assignment of read-only variable 'hoge3'
50 | hoge3 = hoge5;
| ~~~~~~^~~~~~~
const8.cpp:56:7: error: assignment of read-only variable 'hoge3'
56 | hoge3 = hoge6;
| ~~~~~~^~~~~~~
#include <stdio.h>
#define PR(a) printf( #a " = %d \n",a)
int main(){
int hoge1=1;
int * hoge2;
int * const hoge3=&hoge1;
const int * hoge4;
int const * hoge5;
const int * const hoge6=hoge3-2;
//const int const * hoge7;
hoge2= &hoge1-1;
hoge4 = &hoge1+1;
hoge5 = &hoge1+2;
//hoge7 = &hoge1+3;
PR(hoge1);
PR(hoge2);
PR(hoge3);
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(*hoge2);
PR(*hoge3);
PR(*hoge4);
PR(*hoge5);
PR(*hoge6);
hoge4 = hoge2;
hoge5 = hoge2;
PR(hoge4);
PR(hoge5);
PR(*hoge4);
PR(*hoge5);
hoge2 = hoge3;
hoge4 = hoge3;
hoge5 = hoge3;
PR(hoge2);
PR(hoge4);
PR(hoge5);
PR(*hoge2);
PR(*hoge4);
PR(*hoge5);
hoge5 = hoge4;
PR(hoge5);
PR(*hoge5);
hoge4 = hoge5;
PR(hoge4);
PR(*hoge4);
hoge4 = hoge6;
hoge5 = hoge6;
PR(hoge4);
PR(hoge5);
PR(hoge6);
PR(*hoge4);
PR(*hoge5);
}
# g++ const9.cpp
# ./a.out
hoge1 = 1
hoge2 = 1182859008
hoge3 = 1182859012
hoge4 = 1182859016
hoge5 = 1182859020
hoge6 = 1182859004
*hoge2 = 1585718576
*hoge3 = 1
*hoge4 = 1182859020
*hoge5 = 32766
*hoge6 = 0
hoge4 = 1182859008
hoge5 = 1182859008
*hoge4 = 1585718576
*hoge5 = 1585718576
hoge2 = 1182859012
hoge4 = 1182859012
hoge5 = 1182859012
*hoge2 = 1
*hoge4 = 1
*hoge5 = 1
hoge5 = 1182859012
*hoge5 = 1
hoge4 = 1182859012
*hoge4 = 1
hoge4 = 1182859004
hoge5 = 1182859004
hoge6 = 1182859004
*hoge4 = 0
*hoge5 = 0
#docker起動方法
$ docker run -it kaizenjapan/constc /bin/bash
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.