常量和宏定义
目录:
一、变量
二、常量
三、定义符号常量
四、标识符(identifier)
五、字符串常量
一、变量
变量,就是在内存中找一个适当的空间并且命名存放数据。
指定字符型数据'a'取名为c。名字只要符合变量命名规则即可。存放的内容是可以改变的。字符型只占一个字节只能存放字符。
声明一个整型变量520叫做love,能够存放一个整数。一个整型比一个字符型大'a'可以存放到520的位置但不建议这么做。
声明浮点型数据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 <stdio. h>
//#开头为预处理命令,写在开头位置。输入注意标点符号。
#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工作室”替换掉:
四、标识符(identifier)
在C语言中标识符指一切的名字,比如符号常量名就是标识符,变量名也是标识符。所以标识符的命名规范就和变量名的命名规范是一样的。
>标识符只能是英文字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成。
- i_love_fishC_520
>第一个字母必须是字母或者下划线开头。
>标识符区分大小写。
- FISHC≠fishc
>不能使用关键字来命名标识符。
五、字符串常量
用单引号括起来的是字符,编译器编译的时候只需要为每个字符一个一节的空间就够了。用双引号括起来的是字符串,那么编译器在编译时就需准备对应字符的空间量来存放。
但有一个问题编译玩后操作系统如何去判断一个字符串的长度。在知道一个字符串的开头之后怎么去找字符串的结尾?
如果不知道在哪里结束那么内存就是连续的会不断的读取一下。那就会出问题。
所以为了解决这个问题,C语言的作者就用了一个特殊的字符来标志字符串的结束位置。当操作系统读取到这个特殊字符后就结束读取。这个特殊字符就是\0。用于表示一个字符串的结束位置。每个字符后会自动添加一个\0。