const是C语言keyword,它定义一个变量不同意变更。使用const在一定程度上,可以提高节目的安全性和可靠性。其他。解const的作用,在看别人的代码时,对理解对方的程序有一定帮助。



1、const可以理解成是”仅仅读变量“的限定词。从这里可以看出,const修饰的是变量,跟常量是不同的,常量是被编译器放在内存中的仅仅读区域,当然也就不可以去改动它。

而”仅仅读变量“则是在内存中开辟一个地方来存放它的值。仅仅只是这个值由编译器限定不同意被改动。const就是用来限定一个变量不同意被改变的修饰符。由于const声明的变量是仅仅读变量,所以它不能通过赋值、增量或减量运算来改动该变量的值,仅仅可以初始化一个const变量,初始化完毕后,不能再改变它。

const int nochange。nochange = 12;/*这是不同意的*/

const int nochange = 12。/*这是能够的*/



2、在声明指针时使用keywordconst,一定要区分让指针本身成为const与让指针指向的值成为const区分开来。

const float *pf;/*pf指向一个常量浮点数值。pf指向的值必须是不变的。但pf本身的值能够改变*/

float  *const pt;/*pt是一个常量指针,它必须总是指向同一个地址,但所指向的值能够改变*/

const float *const ptr;/*ptr必须总是指向同一个位置。而且它所指位置存储的值也不能改变*/

float const *pfc。等同于const float *pfc;

把const放在类型名的后边和*的前边。意味着指针不能用来改变它所指向的值。

总之。一个位于*左边任何位置的const使得数据成为常量。而一个位于*右边的const使得指针自身成为常量。

常见使用方法是声明作为函数形式參量的指针。



3、对全局数据使用const。

首先遵循外部变量的惯用规则:在一个文件里进行定义声明,在其它文件里进行引用声明(使用externkeyword)。

/*file.c——定义一些全局变量*/

const doubule PI = 3.141;

/*file2.c——使用在其它文件里定义的全局变量*/

extern const double PI;

其次是将常量放在一个include文件里。这时还必须使用静态外部存储类:

/*constant.h——定义一些全局变量*/

static const double PI = 3.141;

/*file1.c——使用在其它文件里定义的全局变量*/

#include "constant.h"

/*file2.c——使用在其它文件里定义的全局变量*/

#include "constant.h"

假设不使用keywordstatic,在文件file1.c和file2.c包括constant.h会造成每个文件都有统一的标识定义声明。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

【C语言的日常实践(十四)】constkeyword详细解释的更多相关文章

  1. 日常英语---十四、Dolce & Gabbana cancels China show amid 'racist' ad controversy(adj.温柔的,prep.在其中)

    日常英语---十四.Dolce & Gabbana cancels China show amid 'racist' ad controversy(adj.温柔的,prep.在其中) 一.总结 ...

  2. J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP

    J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言   搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理.    ...

  3. 【C语言的日常实践(十二)】命令行参数

    C计划main函数有两个参数.文章1一个通常被称为argc,它代表的命令行参数的个数. 第2个通常称为argv.它指向一组參数值. 指针数组:这个数组的每一个元素都是一个字符指针,数组的末尾是一个NU ...

  4. 【C语言的日常实践(十六)】字符串输出功能puts、fputs和printf

    C有三个标准库函数的输出字符串puts().fputs()和printf(). 1.puts()函数仅仅须要给出字符串參数的地址. #include <stdio.h> int puts( ...

  5. Go语言核心36讲(Go语言实战与应用十四)--学习笔记

    36 | unicode与字符编码 在开始今天的内容之前,我先来做一个简单的总结. Go 语言经典知识总结 在数据类型方面有: 基于底层数组的切片: 用来传递数据的通道: 作为一等类型的函数: 可实现 ...

  6. 【C语言的日常实践(八)】弦

    串数据类型是一个重要的,但C有没有明确的语言字符串数据类型.头文件string.h它包括大多数字符串处理函数. 故,有操作的串.通常包括string.h头文件. 1.字符串的长度:对字符串进行的操作中 ...

  7. R语言学习笔记(十四):零碎知识点(41-45)

    41--ls( ) ls()可以用来列出现存的所有对象. pattern是一个具名参数,可以列出所有名称中含有字符串"s"的对象. > ls() [1] "s&qu ...

  8. vue学习指南:第十四篇(详细) - Vue的 路由 第四篇 ( 路由的导航守卫 )

    导航守卫 一.全局导航守卫 1. 全局导航守卫,把方法给 router,只要路由发生改变跳转都会触发这个函数 2. 每个路由 都有一个 meta 3. 全局导航守卫分两种: 1. 全局前置导航守卫:路 ...

  9. C语言库函数大全及应用实例十四

    原文:C语言库函数大全及应用实例十四                                       [编程资料]C语言库函数大全及应用实例十四 函数名: strset 功 能: 将一个串 ...

随机推荐

  1. TCP/IP详细解释--TCP/IP可靠的原则 推拉窗 拥塞窗口

    TCP和UDP在同一水平---传输层.但TCP和UDP最不一样的地方.TCP它提供了一个可靠的数据传输服务,TCP是面向连接的,那.使用TCP两台主机通过第一通信"拨打电话"这个过 ...

  2. 使用HtmlAgilityPack批量抓取网页数据

    原文:使用HtmlAgilityPack批量抓取网页数据 相关软件点击下载登录的处理.因为有些网页数据需要登陆后才能提取.这里要使用ieHTTPHeaders来提取登录时的提交信息.抓取网页  Htm ...

  3. 【ALearning】第二章 Androidproject知识介绍

    本章介绍了主要的初步Androidproject成立了一个开发环境.为了Android意识的整体项目和理解.本章包含Android开发环境的搭建.第一Android工程Hello World与Andr ...

  4. hdu2612(bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题意:求2个点到任意一个KFC的距离之和,使其最小. 分析:由两个点出发分别两次bfs,求得到每 ...

  5. QT怎样在QTableWidge显示图片

      <span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">QTableWi ...

  6. HTML5游戏开发进阶指南

    <HTML5游戏开发进阶指南> 基本信息 作者: (印)香卡(Shankar,A.R.)    译者: 谢光磊 出版社:电子工业出版社 ISBN:9787121212260 上架时间:20 ...

  7. 为了找到自己的路——leo锦书62

    <Leo锦书(文章1编辑)>百度已经降落阅读,今后将继续更新.免费下载:http://t.cn/RvawZEx 柯克•卡梅隆是谁呢?在中国听过这名字的人预计不多.但看下封面我们马下就会说: ...

  8. GString及IntelliJIdea中调试Groovy的操作步骤

    今天是学习Groovy的第一天,首先我觉得学习任何一种语言都要先弄清楚这种语言的特性,因为只有了解了特性之后学习才能达到好的效果,那么groovy的特点是什么的.我觉得groovy是一种动态语言,动态 ...

  9. ubuntu oracle jdk

    sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-javaX-i ...

  10. 解决:Could not find debuginfo pkg for dependency package glibc-2.12-1.132.el6_5.3.i686

    场景: (gdb) break main Breakpoint 1 at 0x8048417 (gdb) r Starting program: /usr/local/src/ccode/ch11/s ...