C语言const关键字的作用
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 #include <math.h> 6 #include <time.h> 7 #include <Windows.h> 8 9 #define N 10 //定义常量常用方法 10 11 //const修饰常量 12 int main0301(void) 13 { 14 const int a = 10; 15 16 //a = 200; //不可以修改 17 18 int* p = &a; 19 *p = 677; 20 printf("a = %d\n",a); //借助指针可以修改const普通变量的值。 21 22 system("pause"); 23 return EXIT_SUCCESS; 24 } 25 26 //const修饰指针 27 int main(void) 28 { 29 int a = 10; 30 int b = 20; 31 int const* p = &a; 32 printf("p == &a == %p\n",p ); 33 34 //*p = 500; //【失败】将a的值,改为500,不能改 35 36 p = &b; //【成功】可以修改p变量的内容 37 38 printf("p == &b == %p\n",p); 39 printf("*p = %d\n", *p); 40 41 return EXIT_SUCCESS; 42 } 43 44 //const关键字作用:限制指针所指向的内存空间,为只读(不允许修改)
main函数运行的结果:
打个比方,变量a存着一座城堡【int a = 10;】,
变量b存着一处村庄。【int b = 20;】
指针*p是一个路牌,上面写着城堡的地址并指向城堡【int const* p = &a;】。
使用const关键字修饰指针*p以后,你不能改变量a里存着城堡这个内容(限制指针所指向的内存空间,为只读,不允许修改)。【*p = 500;失败,编译不通过】
但是你可以修改路牌指针*p的内容【p = &b;】,把上面写着的地址改成&b。
这样这个路牌就指向变量b村庄,用printf打印,打印出来的值就是村庄。【printf("*p = %d\n", *p);,结果是*p = 20 】
结论:使用const修饰指针相当于保护了变量内容不会被间接引用修改,只能修改指针指向的地址。