const.c

来自「Small Device C Compiler 面向Inter8051」· C语言 代码 · 共 53 行

C
53
字号
/* Tests usage of const qualifier. */#include <testfwk.h>char k;					/* char */const char const_char = 123;		/* constant char */const char * const_char_ptr;		/* pointer to constant char */char * const char_ptr_const = &k;	/* constant pointer to char */const char * const const_char_ptr_const = &const_char;					/* constant pointer to constant char */char char_array[3];			/* array of char */const char const_char_array[] = {1,2,3}; /* array of constant char */const char ** const_char_ptr_ptr;	/* pointer to pointer to constant char */charident(char x){  return x;}voidtestConst(void){  /* Since const_char_ptr is in itself not constant, we can change it */  const_char_ptr = const_char_array;  const_char_ptr++;  ASSERT(*const_char_ptr == 2);  /* Check for bug #621531 */  const_char_ptr = const_char_array;  ASSERT(const_char_ptr[0] == 1);  const_char_ptr++;  /* Since char_ptr_const is constant, we cannot change it. However, */  /* we can change the object that it points to.                     */  *char_ptr_const = 5;  ASSERT(ident(*char_ptr_const)==5);  (*char_ptr_const)++;  ASSERT(ident(*char_ptr_const)==6);  /* We can't modify const_char_ptr_const or the object that it points */  /* to. Unfortunately, we can't test that compiler enforces these     */  /* restriction, so just verify its initialization.                   */  ASSERT(*const_char_ptr_const == const_char);  /* We can change const_char_ptr_ptr or the object that it points to. */  const_char_ptr = const_char_array;  const_char_ptr_ptr = &const_char_ptr;  ASSERT(ident(**const_char_ptr_ptr)==1);  (*const_char_ptr_ptr)++;  ASSERT(ident(**const_char_ptr_ptr)==2);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?