- 常量或常数,表示固定不变的数据,是具体的数据
- 常量是固定值,在程序执行期间不会改变
- 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量
- 变量使用前必须先进行声明(或定义),向操作系统申请一块内存空间,用于存放数据
- 变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的
- 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上
| 类型 | 描述 |
|---|---|
| char | 通常是一个字节(八位), 这是一个整数类型。 |
| int | 整型,4 个字节,取值范围 -2147483648 到 2147483647。 |
| float | 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。
|
| double | 双精度浮点值。双精度是1位符号,11位指数,52位小数。
|
| void | 表示类型的缺失。 |
int i; // 定义整数型变量,用于存放整数 char c; // 定义字符型变量,用于存放字符 float f; // 定义浮点型变量,用于存放浮点数 double d; // 定义浮点型变量,用于存放浮点数int i=0; // 定义整数型变量并初始化 char c=0; // 定义字符型变量并初始化 double d=0; // 定义浮点型变量并初始化
常量的值赋给变量:
i = 10; // 整数型变量赋值10 c = 'A'; // 字符型变量赋值'A' d = 1500.87; // 浮点型变量赋值1500.87 strcpy(name,"xiaoqiu"); // 对字符串变量赋值"xiaoqiu"
变量的值赋给变量:
int i1=i; // 定义变量i1并把i的值赋给它 char c1=c; // 定义变量c1并把c的值赋给它 double d1=d; // 定义变量money1并把money的值赋给它 char name1[21]; // 定义字符串变量name1 strcpy(name1,name); // 把name的值赋给name1 字符串变量的赋值与其它类型不同,不能用=号,要用strcpy函数
在C语言中,没有“字符串”这个数据类型,而是用字符数组来存放字符串
char name[21]; // 定义一个可以存放20字符的字符串
温馨小提示:
对字符串变量来说,初始化就是把内容清空,本质上也是赋0值
char name[21]; // 定义一个可以存放20字符的字符串 memset(name,0,sizeof(name)); // 清空字符串name中的内容
字符串变量的初始化与其它类型不同,要用memset函数
test2.c
- #include
- #include
-
- int main()
- {
- int i=0; // 定义整数型变量并初始化
- char c=0; // 定义字符型变量并初始化
- double d=0; // 定义浮点型变量并初始化
- char name[20]; // 定义字符串变量
-
- memset(name,0,sizeof(name)); // 字符串初始化
-
- i=10; // 整数型变量赋值10
- c='A'; // 字符型变量赋值'A'
- d=3.14; // 浮点型变量赋值3.14
- strcpy(name,"xiaoqiu"); // 对字符串变量赋值"xiaoqiu"
-
- printf("i=%d\n",i);
- printf("c=%c\n",c);
- printf("d=%f\n",d);
- printf("name=%s\n",name);
- }
运行效果:

C库函数 - strcpy()
C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest,需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况
下面是 strcpy() 函数的声明。
char *strcpy(char *dest, const char *src)
dest -- 指向用于存储复制内容的目标数组。
src -- 要复制的字符串。
该函数返回一个指向最终的目标字符串 dest 的指针
举个栗子 test3.c
- #include
- #include
-
- int main()
- {
- char src[40];// 定义字符串变量
- char dest[100];// 定义字符串变量
-
- memset(dest, '\0', sizeof(dest)); //字符串初始化
- strcpy(src, "Be happy every day");//对字符串变量src赋值"Be happy every day"
- strcpy(dest, src);//把src所指向的字符串复制到 dest
-
- printf("最终的目标字符串: %s\n", dest);
-
- return(0);
- }
运行效果

C库函数 - memset()
C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符
下面是 memset() 函数的声明。
void *memset(void *str, int c, size_t n)
str -- 指向要填充的内存块。
c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
n -- 要被设置为该值的字符数。
该值返回一个指向存储区 str 的指针
举个栗子 test4.c
- #include
- #include
-
- int main ()
- {
- char str[50];
-
- strcpy(str,"Not because of my persistence, but because you deserve it.");
- printf("%s\n", str);
-
- memset(str,'^',11);
- printf("%s\n", str);
-
- return(0);
- }
运行效果

关键字也称为保留字,共32个,这些单词在C语言中有特别的含义,不能把它用于变量或函数的命名
auto:声明自动变量 break:跳出当前循环 case:开关语句分支 char:声明字符型变量或函数返回值类型 const:声明只读变量 continue:结束当前循环,开始下一轮循环 default:开关语句中的“默认”分支 do:循环语句的循环体 double:声明双精度浮点型变量或函数返回值类型 else:条件语句否定分支(与if连用) enum:声明枚举类型 extern:声明变量或函数是在其它文件或本文件的其他位置定义 float:声明浮点型变量或函数返回值类型 for:一种循环语句 goto:无条件跳转语句 if:条件语句 int:声明整型变量或函数 long:声明长整型变量或函数返回值类型 register:声明寄存器变量 return:子程序返回语句(可以带参数,也可不带参数) short:声明短整型变量或函数 signed:声明有符号类型变量或函数 sizeof:计算数据类型或变量长度(即所占字节数) static:声明静态变量 struct:声明结构体类型 switch:用于开关语句 typedef:用以给数据类型取别名 unsigned:声明无符号类型变量或函数 union:声明共用体类型 void:声明函数无返回值或无参数,声明无类型指针 volatile:说明变量在程序执行中可被隐含地改变 while:循环语句的循环条件
关键字无需背诵,用多了就熟悉了,本期就到这里,886!