const test。docker(136)


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