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

C语言const关键字的作用的更多相关文章

  1. C语言学习及应用笔记之三:C语言const关键字及其使用

    在C语言程序中,const关键字也是经常会用到的一个关键字,那么使用const关键字的目的是什么呢?事实上,在程序中使用const关键字的主要目的就是为了向使用者传递设计者的一些意图. 事实上,无论我 ...

  2. static和const关键字的作用

    static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...

  3. C++中static和const关键字的作用

    static关键字至少有下列几个作用: 函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: 在模块内的static全局变量 ...

  4. const关键字的作用

    1.防止被修饰的成员的内容被改变. 2.修饰类的成员函数时,表示其为一个常函数,意味着成员函数将不能修改类成员变量的值. 3.在函数声明时修饰参数,表示在函数访问时参数(包括指针和实参)的值不会发生变 ...

  5. const 关键字及作用

    1.const 修饰一般常量,可以把变量变成常量 例如: int  num=10; num=100; printf(“num=%d\n”,num); 输出的来得值为:100: 但是如果const in ...

  6. 实习第一个月总结(const关键字、条件编译、volatile关键字、#和##的作用、函数指针)

    C语言中const关键字的作用: 修饰局部变量或者全局变量,表示变量n的值不能被改变了 修饰指针,分为常量指针与指针常量,也可以两者结合 常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变, ...

  7. C/C++经典面试题1,const关键字用法总结

    本文主要说明了const关键字的作用,包括了用于对数组,指针与类相关的修饰方法,作为笔记总结使用.若有错误与不足,欢迎指正. const关键字 用于修饰一个常类型,常类型的变量或对象的值无法被改变,即 ...

  8. C语言中关键字auto、static、register、const、volatile、extern的作用

    原文:C语言中关键字auto.static.register.const.volatile.extern的作用 关键字auto.static.register.const.volatile.exter ...

  9. C语言之头文件,static与const关键字

    [前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔 ...

随机推荐

  1. CVE-2012-0158:Microsoft Office MSCOMCTL.ocx 栈溢出漏洞调试分析

    0x01 Lotus Blossom 行动 在 2015 年 6 月,国外安全厂商 Palo Alto Networks 的威胁情报团队 Unit42 发现了一起针对东南亚政府的一次间谍行为,试图获取 ...

  2. 2020年电子设计大赛F题

    挺简单前一百分得了九十多 当然主要是队友很给力 1 温度判别 MLX90614DCC,然后测温拟合吧...从五十度到三十度平均一次要测一个半小时...这是真的痛苦...然后虽然文件里面说自带测温工具, ...

  3. h5基本内容

    一 简介 html 超文本标记语言 W3C 中立技术标准机构 W3C标准包括 结构化标准语言(HTML,XML) 表现标准语言(CSS) 行为标准(DOM,ECMAScript) 二 入门例子 < ...

  4. Xshell6连Linux

    一.安装 文件 链接: 提取码:8rmr 二.连Linux 名称填自己喜欢的.续之前,我们保持一样的名字.主机填IP,根据之前Linux填的静态IP去连接. 然后双击,连接 我们用最高权限,填root ...

  5. thinkphp 中区块block和模板继承extend用法举例

    1.介绍 模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义 ...

  6. 三、jmeter常用的元件及组件

    一.HTTP cookie Manager 用来储浏览器产生的用户信息,Stepping Thread Group 可用于模拟阶梯加压! 二.HTTP Cache Manager 缓存管理器(模拟浏览 ...

  7. Mybatis最终搭建

    框架搭建的流程1. 导入jar2. 准备属性文件和配置文件3. 编写数据库的表和类4. 为类编写一个XxxMapper接口5. 编写接口对应的映射文件XxxMapper.xml6. 根据接口的方法, ...

  8. File & Directory

    新开一节IO(Input/Output)的用法. 这节主要讲一下操作文件和文件目录的两个静态类:File 和 Directory. 在进入正题之前,先理解一下相对路径和绝对路径这两个概念: 绝对路径, ...

  9. Zabbix 5.0 优化建议

    Blog:博客园 个人 在使用Zabbix过程中,正确的调整Zabbix系统,使之保持高性能是非常重要的,能够充分利用硬件资源,监控更多主机和性能指标. 硬件 关于zabbix server端硬件的建 ...

  10. SE_Work1_阅读构建之法&项目管理实践

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:阅读<构建之法>并回答问题 个人博客作业 我在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作 ...