常量和宏定义|学习笔记

简介: 快速学习常量和宏定义

开发者学堂课程【你的第一门 C 语言课常量和宏定义】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5455


常量和宏定义


目录:

一、变量

二、常量

三、定义符号常量

四、标识符 (identifier)

五、字符串常量


一、变量

变量,就是在内存中找一个适当的空间并且命名存放数据。

图片11.png

指定字符型数据 'a' 取名为 c。名字只要符合变量命名规则即可。存放的内容是可以改变的。字符型只占一个字节只能存放字符。

图片12.png

声明一个整型变量520叫做 love,能够存放一个整数。一个整型比一个字符型大 'a' 可以存放到520的位置但不建议这么做。

图片13.png

声明浮点型数据3.142593命名为pi,这个时候3.142593就不能存放到520的位置,会造成精度缺失。如果小数特别多可用double数据类型

 

二、常量

什么是变量呢?

在程序运行过程中它的值不能被改变,就称之为变量。变量可以改变,变量是不可以改变的。

比如说刚才的字符 'a' 就是常量,就是代表一个字符或一个数字。并且不能被改变。

C 语言常见的常量有数字,叫做整型常量。

实型常量,就是实数,带有小数的就是实数。

字符常量,字符常量包括普通字符如 'A',和转义字符如 '\n'。

字符串常量,用双引号括起来。是相关的值就不能改变了。

符号常量,比较特殊,使用之前必须先定义。


三、定义符号常量

格式:  #define 标识符 常量

//这种方式称为宏定义,现在只需要理解 #define 就是把程序中所有出现的标识符都替换为后面的常量就可以了。相关实例:

- #define URL "http: //www. fishc. com"

//表示用URL去替换后面的网址,后面例子都是同理的。

- #define NAME "鱼C工作室""

- #define BOSS "小甲鱼"

- #define YEAR 2010

- #define MONTH 5

- #define DAY 20

//像NAME等都是符号常量。

//使用大写字母为符号常量,小写字母为变量,由此来加以区分。

实例代码:

#include
//#开头为预处理命令,写在开头位置。输入注意标点符号。
#define URL "http:/ /www. fishc. com"

#define NAME "fa CT 4 "

#define BOSS"JFf "

#define YEAR 2010

#define MONTH 5

#define DAY 20

//#define后面不需要加;
int main( )

{printf("%s成立于%d年%d

月%d\ n", NAME, YEAR, MONTH, DAY) ;

printf("%s是%s创立的.....\n", NAME ,BOSS) ;

printf("%s的域名是%s\n", NAME, URL);

//%s接的是字符串。

传入 NAME,然后接着用鱼 C 工作室替换掉。

//如果没有宏定义就得用用鱼 C 工作室替换掉所有的 NAME。
return 0;

}

执行结果如预期一样所有的 NAME 都被用鱼 C工作室替换掉:

图片14.png


四、标识符(identifier)

在 C 语言中标识符指一切的名字,比如符号常量名就是标识符,变量名也是标识符。所以标识符的命名规范就和变量名的命名规范是一样的。

>标识符只能是英文字母 (A-Z,a-z) 和数字(0-9)或者下划线(_)组成。

- i_love_fishC_520

>第一个字母必须是字母或者下划线开头。

>标识符区分大小写。

- FISHC≠fishc

>不能使用关键字来命名标识符。


五、字符串常量

图片15.png

用单引号括起来的是字符,编译器编译的时候只需要为每个字符一个一节的空间就够了。用双引号括起来的是字符串,那么编译器在编译时就需准备对应字符的空间量来存放。

但有一个问题编译玩后操作系统如何去判断一个字符串的长度。在知道一个字符串的开头之后怎么去找字符串的结尾?

如果不知道在哪里结束那么内存就是连续的会不断的读取一下。那就会出问题。

所以为了解决这个问题,C 语言的作者就用了一个特殊的字符来标志字符串的结束位置。当操作系统读取到这个特殊字符后就结束读取。这个特殊字符就是\0。用于表示一个字符串的结束位置。每个字符后会自动添加一个\0。

目录
打赏
0
0
0
0
55
分享
相关文章
域名列入备案黑名单解除教程
我前段时间买了个CC后缀域名,打算使用腾讯云解析方便管理,当我添加解析时发现提示工信部黑名单无法添加,当时就很懵,就打算寻找解封的方法。
1288 0
域名列入备案黑名单解除教程
阿里云服务器ECS通用算力型u1和ECS经济型e实例性能特点、使用及常见问题解答FAQ
阿里云ECS云服务器的经济型e实例和通用算力型u1实例深受开发者和中小企业青睐。e实例适合中小型网站、开发测试等轻量级应用,采用共享CPU调度模式,性价比高;u1实例则适用于中小型企业级应用,提供更高的性能保障和稳定性,支持固定CPU调度模式,计算性能更稳定。同等配置下,u1实例在网络带宽、IOPS等方面表现更优,价格也相对较高。个人用户可选择e实例,中小企业建议选择u1实例以确保业务稳定性。
184 5
探索微服务架构下的缓存策略
【7月更文挑战第18天】在微服务架构的海洋中,缓存策略如同指南针,指引着系统性能的优化方向。本文将深入探讨微服务环境下缓存的有效应用,从缓存的基本概念出发,到微服务架构中缓存的特殊需求,再到实际案例分析,最后讨论缓存一致性与失效策略,旨在为开发者提供一套完整的缓存解决方案框架。
机器之心开放人工智能专业词汇集(附Github地址)
作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客、论文、专家观点等内容上已经积累了超过两年多的经验。
846 0
机器之心开放人工智能专业词汇集(附Github地址)
云效云栖大会首发应用交付和项目管理协作新品,助力企业从DevOps到BizDevOps
2021年杭州云栖大会云效BizDevOps论坛,首发应用交付和项目管理协作新品,助力企业DevOps到BizDevOps,云效从DevOps理念、工具和实践案例层面进行全面升级。通过理念、工具和实践帮助企业从不仅拥有一朵云,还可以结合自己的业务用好云。
983 0
云效云栖大会首发应用交付和项目管理协作新品,助力企业从DevOps到BizDevOps
重点人员动态管控系统开发,公安合成作战平台建设
重点人员动态管控系统是对在公安工作中需要重点关注的对象,通过大数据的分析研判工具进行实时的动态关联布控、起到自动报警,以实现高危预警,在逃抓捕等,重点人员动态管控是通公安机关对被关注对象身份信息的录入和提交到系统中,通过请求服务,数据交换,碰撞比对等技术,与各级公安机关掌握的所有信息进行关联 查询检索,深度比对,做到既能够与后台储存的各类信息数据进行关联比对,又能够与前端采集录入的各类信息进行碰撞比对,并能够实现比对碰撞结果的定向推送和报警提示,以及监控对象比对结果综合展现等一系列功能。
543 0
一张图看懂阿里巴巴商业操作系统
2019阿里巴巴ONE商业大会在杭州召开。会上,清晰明了的介绍了阿里巴巴商业操作系统。
28113 0
点播和播放器下载需要的参数的区别(VideoId、AccessKeyId、AccessKeySecret、playKey、playauth)
解答参数VideoId、AccessKeyId、AccessKeySecret、playKey、playauth是什么及如何获取.
11386 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等