【C语言的日常实践(十四)】constkeyword详细解释

【C语言的日常实践(十四)】constkeyword详细解释

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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会造成每个文件都有统一的标识定义声明。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117671.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 单选钮和复选框控件的应用教案_在mfc中弹出一个窗口

    单选钮和复选框控件的应用教案_在mfc中弹出一个窗口单选按钮#include <windows.h>LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst;int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,…

    2022年8月18日
    15
  • pytest指定用例_文件夹排列顺序自定义

    pytest指定用例_文件夹排列顺序自定义前言测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果.有些同学在写用例的时候,用例写了先后顺序,有先后顺序后,后面还会有新的问题(如:上个用例返回

    2022年7月30日
    6
  • vue组件化的理解_vue引入组件的方式有几种

    vue组件化的理解_vue引入组件的方式有几种前言有时候有一组html结构的代码,并且这个上面可能还绑定了事件。然后这段代码可能有多个地方都被使用到了,如果都是拷贝来拷贝去,很多代码都是重复的,包括事件部分的代码都是重复的。那么这时候我们就可以

    2022年7月30日
    9
  • 批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)

    批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)梯度下降法作为机器学习中较常使用的优化算法,其有着三种不同的形式:批量梯度下降(BatchGradientDescent)、随机梯度下降(StochasticGradientDescent)以及小批量梯度下降(Mini-BatchGradientDescent)。其中小批量梯度下降法也常用在深度学习中进行模型的训练。接下来,我们将对这三种不同的梯度下降法进行理解。  为了便于理解,…

    2025年10月22日
    3
  • a卡eth挖矿教程_a卡挖eth用什么内核

    a卡eth挖矿教程_a卡挖eth用什么内核  对于ETH挖矿来说,A卡无疑是最合适的选择,性价比高。如果你只想挖ETH,那选择A卡无疑是最明智的。但是,在使用A卡挖矿的过程中,往往会出现很多难以解决的问题,影响挖矿的效率。其中很大一部分原因是由于A卡本身的特性导致的。很多人在使用A卡挖ETH的过程中会出现这样一种情况:开始一段时间还是正常的运行,但是运行一段时间后就开始报错,导致无法正常挖矿。这是由于A卡具有自动更新的特性。所以在使用A卡…

    2022年10月16日
    3
  • 算法学习笔记(二):平方根倒数速算法

    算法学习笔记(二):平方根倒数速算法序这是一个神奇的算法!一、介绍起源于一篇《改变计算技术的伟大算法》文章,知道这个算法,然后google一下,维基讲的还不错,现在自己权当理清下思路。先贴源代码,为《雷神之锤III竞技场》源代码中的应用实例,剥离了C语言预处理器的指令,并附上了原有的注释。floatQ_rsqrt(floatnumber){ longi; floatx2,y; const

    2022年5月7日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号