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修饰指针相当于保护了变量内容不会被间接引用修改,只能修改指针指向的地址。

最新文章

  1. python基础01 Hello World!
  2. HDOJ 4750 Count The Pairs
  3. Material Design入门(三)
  4. C/C++ 中长度为0的数组
  5. 默认的app.js
  6. LSMW应用
  7. signalR的一些细节
  8. HDU 5122 K.Bro Sorting
  9. Java面向对象 正则表达式
  10. 屏幕上两点画线+DDALine算法
  11. tp3.2 D 和 M 的区别
  12. (sort 排序)P1583 魔法照片 洛谷
  13. linux修改文件为可执行文件
  14. Python基础知识:字符串
  15. Bootstrap学习遇到的role属性--- 无障碍网页应用属性
  16. mysql学习(2)-Navicat Premium 12 链接MySQL8.0.11数据库报2059错误
  17. C# ?? 运算符是什么?
  18. 风云2号云图Mosaic Dataset处理
  19. 3_bootsrap布局容器
  20. Python Seaborn 笔记

热门文章

  1. Python | Pandas数据清洗与画图
  2. c++中new[ ]与delete[ ]的分析
  3. ffmpeg实践
  4. BUAA-OO-第三单元总结
  5. Zoho:SaaS行业的“紫色奶牛”
  6. JAVA 面试相关
  7. 『政善治』Postman工具 — 13、Postman接口测试综合练习
  8. 神奇的不可见空格&lt;200b&gt;导致代码异常
  9. [bug] idea编译后没有xml文件
  10. HTML的表格元素