### 变量及赋值 ###
变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。就好比:住在房间里的客人与房间号是两个不同的概念。
![](http://img.mukewang.com/547ee8510001562101960154.jpg)
变量定义的一般形式为:`数据类型 变量名;`
多个类型相同的变量:`数据类型 变量名, 变量名, 变量名...;`
![](http://img.mukewang.com/5492b58f0001043803840131.jpg)
变量名和标识符的命名规范完全相同。%d在后面会有详细讲解
**注意:在定义中不允许连续赋值,如int a=b=c=5;是不合法的。**
变量的赋值分为**两种方式:1.先声明再赋值 2.声明的同时赋值**,例如:
![](http://img.mukewang.com/550aa8d000017f4202330103.jpg)
### 常量 ###
值不发生改变的量称为常量。C语言的常量可以分为直接常量和符号常量。
接常量也称为字面量,是可以直接拿来使用,无需说明的量,比如:
- 整型常量:13、0、-13;
- 实型常量:13.33、-24.4;
- 字符常量:‘a’、‘M’
- 字符串常量:”I love imooc!”
下面的代码分别打印这四种直接常量:
![](http://img.mukewang.com/5492b6fe00017e5b03490079.jpg)
在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:
`#define 标识符 常量值 `
符号常量的标示符一般习惯使用大写字母,变量的标示符一般习惯使用小写字母,加以区分。下面是一个使用符号常量的小例子:
![](http://img.mukewang.com/5492b73b0001169f03890127.jpg)
#### 符号常量之宏
#include<stdio.h>
#define PRICE 10.5
int main()
{
int num=20; //num代表数量
double money; // money代表金额
money=PRICE*num; //算出总金额
printf("20本《格林童话》的售价为:%.2f",money); //%.2f小数点后只显示2位
return 0;
}
**C语言允许我们给常量取个别名 如:#define PRICE 10.5 ,预定义处理命令#define给10.5取个别名叫PRICE,PRICE就是宏,它是代替常量的标识符,此后凡是在文本文件中出现的PRICE都代表100。**
**#define是个预处理命令,它在编译器编译代码之前运行,它后面所跟的标识符就是所谓的符号常量,又称宏名,宏名后面是宏体,当执行预处理命令时,会将所有的宏名替换为宏体,这个工作叫宏交换或者宏展开。**
不能对常量进行赋值,宏尽量要大写。
#### const常量
#include <stdio.h>
int main()
{
const int num=3; //const常量只能被初始化
num=4; //错,const常量不能被赋值
return 0;
}
C语言除了用 #define来为常量命名外,还可以用const来定义常量,如上诉代码,关键字const放在变量num前面,将num的属性改为只读。不可再修改。
> **const常量与宏的区别,const常量有数据类型,而宏没有数据类型,由于const常量有数据类型,因此编译器可以对常量的类型,进行安全检查,当发现类型与实际数值不匹配时,会发出警告,但是宏没有数据类型,因此无法进行安全检查,这样在进行宏替换时有可能产生不可意料的错误。**
**注意:常量是不可改变的**
- 前言
- JNI基础知识
- C语言知识点总结
- ①基本语法
- ②数据类型
- 枚举类型
- 自定义类型(类型定义)
- ③格式化输入输出
- printf函数
- scanf函数
- 编程规范
- ④变量和常量
- 局部变量和外部变量
- ⑤类型转换
- ⑥运算符
- ⑦结构语句
- 1、分支结构(选择语句)
- 2、循环结构
- 退出循环
- break语句
- continue语句
- goto语句
- ⑧函数
- 函数的定义和调用
- 参数
- 函数的返回值
- 递归函数
- 零起点学通C语言摘要
- 内部函数和外部函数
- 变量存储类别
- ⑨数组
- 指针
- 结构体
- 联合体(共用体)
- 预处理器
- 预处理器的工作原理
- 预处理指令
- 宏定义
- 简单的宏
- 带参数的宏
- 预定义宏
- 文件包含
- 条件编译
- 内存中的数据
- C语言读文件和写文件
- JNI知识点总结
- 前情回顾
- JNI规范
- jni开发
- jni开发中常见的错误
- JNI实战演练
- C++(CPP)在Android开发中的应用
- 掘金网友总结的音视频开发知识
- 音视频学习一、C 语言入门
- 1.程序结构
- 2. 基本语法
- 3. 数据类型
- 4. 变量
- 5. 常量
- 6. 存储类型关键字
- 7. 运算符
- 8. 判断
- 9. 循环
- 10. 函数
- 11. 作用域规则
- 12. 数组
- 13. 枚举
- 14. 指针
- 15. 函数指针与回调函数
- 16. 字符串
- 17. 结构体
- 18. 共用体
- 19. typedef
- 20. 输入 & 输出
- 21.文件读写
- 22. 预处理器
- 23.头文件
- 24. 强制类型转换
- 25. 错误处理
- 26. 递归
- 27. 可变参数
- 28. 内存管理
- 29. 命令行参数
- 总结
- 音视频学习二 、C++ 语言入门
- 1. 基本语法
- 2. C++ 关键字
- 3. 数据类型
- 4. 变量类型
- 5. 变量作用域
- 6. 常量
- 7. 修饰符类型
- 8. 存储类
- 9. 运算符
- 10. 循环
- 11. 判断
- 12. 函数
- 13. 数学运算
- 14. 数组
- 15. 字符串
- 16. 指针
- 17. 引用
- 18. 日期 & 时间
- 19. 输入输出
- 20. 数据结构
- 21. 类 & 对象
- 22. 继承
- 23. 重载运算符和重载函数
- 24. 多态
- 25. 数据封装
- 26. 接口(抽象类)
- 27. 文件和流
- 28. 异常处理
- 29. 动态内存
- 30. 命名空间
- 31. 预处理器
- 32. 多线程
- 总结
- 音视频学习 (三) JNI 从入门到掌握
- 音视频学习 (四) 交叉编译动态库、静态库的入门学习
- 音视频学习 (五) Shell 脚本入门
- 音视频学习 (六) 一键编译 32/64 位 FFmpeg 4.2.2
- 音视频学习 (七) 掌握音频基础知识并使用 AudioTrack、OpenSL ES 渲染 PCM 数据
- 音视频学习 (八) 掌握视频基础知识并使用 OpenGL ES 2.0 渲染 YUV 数据
- 音视频学习 (九) 从 0 ~ 1 开发一款 Android 端播放器(支持多协议网络拉流/本地文件)
- 音视频学习 (十) 基于 Nginx 搭建(rtmp、http)直播服务器
- 音视频学习 (十一) Android 端实现 rtmp 推流
- 音视频学习 (十二) 基于 FFmpeg + OpenSLES 实现音频万能播放器
- 音视频学习 (十三) Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)