在C语言中,# 指的是预处理指令。像#define就是在main函数之前预先进行定义。

define定义常量

这里定义了常量NUM,我们知道数组固定下标值必须是常量,这也进一步说明了这里define定义的是常量。

define定义宏

这里宏和函数有一些类似,我们来看下面的场景

对比一下函数和宏,是不是有种类似的感觉呢?

虽然相似,但他们其实本质上还是不一样的。

这里为什么要给x,y加()呢?我们可以看一下不加()的效果:

这是加不加()的两种情况,不加()直接就先执行乘法* 了,加了()就会先执行宏的加法,想必大家也明白了吧。

下面我们来看寄存器关键字register:

寄存器关键字register

首先来了解一下电脑用什么来存储东西

1.网盘

顾名思义,“网”,那么就与网络有关,它是利用网络,在其上存储东西,并且是免费的,而且空间很大,能有2TB之多,但是速度很慢。

2.硬盘

电脑上的硬盘,是硬件的一种,绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。大概长这么个样子

它的存储空间也很大,大概能有500G,但是速度也比较慢。

3.内存

这就不用多说了吧,大家都很熟悉了,内存也是计算机存储信息的主要场所,大概8~32G,速度比较快。

4.高速缓存

了解一下,在内存之上还有高速缓存这么个东西,速度更快,但是空间更小,只有几十MB。

5.寄存器

寄存器的信息都集成到CPU,速度非常之快,空间也非常小,通常储存频繁大量使用的数据。

早期CPU都是到内存中读取数据然后进行处理的,但是随着技术发展,CPU运行速度越来越快,内存却没有太大的突破,因此,CPU总是闲置。就像盖房子一样,搬砖的完全跟不上砖瓦工盖房子的速度,这样肯定不行,于是就有了高速缓存和寄存器,内存里的数据先放到高速缓存,高速缓存的数据再放到寄存器,CPU直接读取寄存器里的数据,这样配合就快的多了。

寄存器关键字register只能向编译器建议将什么数据存放到寄存器,具体还得看编译器自己的决定,现在的编译器已经很聪明了,自己也会把重要的数据放入寄存器。

define定义常量和宏 以及 寄存器关键字register相关推荐

  1. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)

    文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...

  2. #define 定义常量和宏,指针和结构体

    目录 #define 定义常量和宏 #define 定义常量 #define 定义宏 指针 内存 指针变量的大小 结构体 #define 定义常量和宏 #define 定义常量 在变量和常量2,#de ...

  3. C语言——初识C语言(define定义常量和宏,指针,结构体)

    1.1define定义常量和宏 define    定义符号(定义常量) //define 定义标识符常量 #define MAX 1000 define    定义宏(宏是有参数的,参数用来替换) ...

  4. C语言中的#define定义常量和宏

    C语言中的define是一个预处理指令. 1.define定义常量        格式为:#define  标识符  常量  , 注意:语句末尾没有":". 2.define定义宏 ...

  5. C++ 笔记(07)— 常量(字面常量、const定义常量、constexpr 定义常量、enum 定义常量、define 定义常量)

    在 C++ 中,常量类似于变量,只是不能修改.与变量一样,常量也占用内存空间,并使用名称标识为其预留的空间的地址,但不能覆盖该空间的内容. 常量可以是任何的基本数据类型,可分为整型数字.浮点数字.字符 ...

  6. UIKIT_EXTERN和define定义常量

    看过我其他的博客的人都知道,我喜欢用define定义常量,最近看了一个开源的轮子,使用UIKIT_EXTERN这个定义的常量,了解了一下,发现使用宏定义的常量会在内存中临时开辟一份内存空间,而使用UI ...

  7. C语言 define 定义常量 - C语言零基础入门教程

    目录 一.define 简介 二.define 实战 1.不使用 define 2.使用 define 3.使用 define 优点 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学 ...

  8. 为什么不要工程中不要随意使用define定义常量

    首先,预处理命令他不是一个常量!!!! 我们来看一段代码 #define avatar @"60"if (false) {#define avatar @"80" ...

  9. C语言——关键字,define定义宏,指针,结构体

    常见关键字 auto break case char continue const default do double else enum extern float for goto if int l ...

最新文章

  1. HDU 1816, POJ 2723 Get Luffy Out(2-sat)
  2. 又见GCD (已知最大公约数和其中一个数求另一个数)
  3. 牛客网SQL篇刷题篇(32-37)
  4. python3萌新入门笔记_我的Python3萌新入门笔记
  5. Go Web 编程--如何确保Cookie数据的安全传输
  6. redis依赖包_092-Redis集群、JedisCluster
  7. 内存缓存 原理 实现
  8. php用win还是linux系统,做网站选择linux系统还是选择windows系统好?
  9. P4778 Counting swaps (组合数学,打表推通项公式,OEIS)
  10. 解决ppt复制到Word的图片导出PDF后出现黑线问题,word转PDF图片不清晰的问题,ppt转矢量图问题
  11. 大佬云集的在线少儿英语市场,谁才是那匹冲出重围的黑马?
  12. 裁判文书网 爬虫 升级最新版本0.7 更新时间2020-12-17
  13. 如何安装或卸载Google Chrome浏览器
  14. linux进程假死的原因_Linux系统死机的原因及解决办法
  15. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...
  16. 解决web网页中的字符乱码问题
  17. 华为机试HJ18 识别有效的IP地址和掩码并进行分类统计
  18. Python的一些基础实操练习题
  19. Avatar状态机设计
  20. 量化交易之价格和成交量的关系

热门文章

  1. pytorch实现多项式回归
  2. solidworks操作!
  3. 爬虫实战:淘宝商品爬取(附词云展示)
  4. 直接在网络上编辑制作图片
  5. 电脑开始关机待机重启出现计算机,电脑关机后进入待机状态如何解决 电脑关机后自动开机怎么回事...
  6. 【iBoard 电子学堂教程】【uCGUI 例程及代码包下载】
  7. 计算机应用基础 word 说课稿,计算机应用基础—文本框说课稿.DOC
  8. JavaScript高手之路:原型和原型链
  9. android instrumentation 原理,Android 运行Instrumentation Test的原理分析
  10. 问题 G: 似魔鬼的步伐