一、常量 -- 在程序执行期间不会改变
在C语言中常量一般分为以下几种:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
#include <stdio.h>
//#define 定义的标识符常量
#define MAX 10
//枚举常量
//枚举-一一列举,比如:
//性别:男,女
//三原色:红、黄、蓝
//星期:一、二、三、四、五、六、日
//枚举关键字 - enum
enum Sex
{
MALE, // 0
FEMALE // 1
};
//MALE,FEMALE -- 枚举常量
enum Color
{
//修改枚举常量的默认值
RED = 3,
BLUE, // 4
YELLOW // 5
};
int main()
{
3;//像这种直接写出来的值就是字面常量
3.14;
//const -- 常属性
//const 修饰的常变量
const int num = 4; //这个地方num本质上还是变量,只是具有了常属性,后面不可再次修改num的值;
//num = 5; //报错,表达式左边必须是可修改的值
//int arr[num] = {0};//报错,[]应是常量表达式
int arr[MAX] = {0}; //可执行
printf("%d\n", num); //4
printf("%d\n", MAX); //10
//枚举常量的值默认从0开始,可以在创建的时候修改,后续不可修改
//枚举常量可以赋值给通过枚举定义的变量
enum Sex s = MALE;
s = FEMALE; //可执行
//MALE = 3; //报错,表达式左边必须是可修改的值
printf("%d\n", MALE); //0
printf("%d\n", FEMALE); //1
printf("%d\n", RED); //3
printf("%d\n", BLUE); //4
printf("%d\n", YELLOW); //5
return 0;
}
二、字符串 -- 由双引号引起的一串字符
在C语言中,字符串是由空字符\0结尾的一堆字符数组,所以字符串可以存储在字符数组中。在计算字符串长度的时候\0是结束标志,不算做字符串内容。
#include <stdio.h>
#include <string.h>
int main()
{
"abcd";
"hello world!";
"";//空字符串
//把字符串存在字符数组里,在语法上是没有问题的
//字符串“abc”存入字符数组时会自动存入一个值为0的转义字符\0表示结尾
// \0 - 字符串的结束标志
char arr[] = "abc"; //数组
char arr2[] = {'a', 'b', 'c'}; //没有结束标志\0,在打印完abc后还会继续打印
char arr3[] = { 'a', 'b', 'c', 0}; //相当于在末尾添加了结束标志\0 { 'a', 'b', 'c', '\0'} - \0对应的ASCII码值是0
char arr4[] = {'a'};
printf("%s\n", arr); //abc %s - 打印字符串格式的数据
printf("%s\n", arr2); //abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫蘟bc
printf("%s\n", arr3); //abc
//strlen - string length 计算字符串长度 -- 需要引入头文件 string.h
printf("%d\n", strlen(arr)); // 3
printf("%d\n", strlen(arr2));// 35 -- 随机值,遇到了\0就停止统计
printf("%d\n", strlen(arr3));// 3
printf("%d\n", strlen(arr4));// 218 -- 随机值,遇到了\0就停止统计
return 0;
}
三、转义字符 -- 转变原来的意思
#include <stdio.h>
#include <string.h>
int main()
{
printf("abcn"); // abcn
printf("abc\n"); //abc \n - 转义字符 换行
//在早期的C语言里,由两个问号(?)再加上一个字符的形式被称为三字母词,例如 ??) 老版本编译器编译成 ]
printf("(Hello World??)"); //(Hello World??) -- 在老版本的编辑器里输出的是 (Hello World] ,例如Visual C++ 6.0
printf("c:\test\32\test.c\n"); //c: est est.c //(这段注释会报错:在注释中遇到意外的文件结束) \t - 水平制表符 相当于按键盘的TAB键
printf("c:\\test\\32\\test.c"); // c:\test\32\test.c
//printf("%c\n", '''); //报错,原因:编译器会将前面两个单引号看成一对儿
printf("%c\n", '\''); //打印字符格式的数据 - '
// \32 -- 表示32作为八进制数字所对应的十进制数值,以这个十进制数值作为ASCII码值,这个ASCII码值对应的字符
// \x32 -- 表示32作为十六进制
printf("%d\n", strlen("c:\test\32\test.c")); // 13 - \t和\32都是转义字符,看做一个字符
return 0;
}
四、选择语句 -- if...else...
#include <stdio.h>
int main()
{
int input = 0;
printf("好好学习?(1,是 2,不是):");
scanf("%d", &input);
if (input == 1 || input == 2)
{
if (input == 1)
printf("走上人生巅峰\n");
else
printf("回家养猪\n");
}
else
printf("你选择了回炉重造\n");
return 0;
}
五、循环语句
#include <stdio.h>
int main()
{
int day = 0;
//while循环
/*while (day < 365)
{
day++;
printf("学习C语言第%d天\n", day);
}*/
//for循环
/*for (int i = 1; i < 366; i++)
{
printf("学习C语言第%d天\n", i);
}*/
//do...while -- 至少输出一次
do
{
day++;
printf("学习C语言第%d天\n", day);
} while (day < 365);
printf("你学习C语言达到了365天\n");
return 0;
}
六、函数
#include <stdio.h>
int main()
{
int sum = Add(10, 20); // 调用函数
printf("sum = %d\n", sum); // sum = 30
return 0;
}
//int -- 函数返回类型
//Add -- 函数名
//x,y -- 函数参数
//{}里的代码 -- 函数体
// return sum -- 返回值
int Add(int x, int y) // 加法函数
{
int sum = x + y;
return sum;
}
七、数组 -- 一种相同类型元素的集合
#include <stdio.h>
int main()
{
//向内存申请了一段连续的存储空间,并命名为arr
//在arr里面存入整型数值1,2,3,4,5,6,7,8,9,10
//对应的下标是 0,1,2,3,4,5,6,7,8,9 -- 下标默认从0开始
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; //定义一个存放10个整数数值的数组
char arr2[4] = {'a', 'b', 'c', 0}; //定义字符类型数组
float arr3[4] = {1.43f, 2.13f, 3.14, 4}; //定义实型数组
//用下标的形式访问数组元素
printf("%d\n", arr[3]);// 4
printf("%c\n", arr2[2]);// c
printf("%c\n", arr2[3]);//
printf("%f\n", arr3[2]);// 3.140000
printf("%f\n", arr3[3]);// 4.000000
return 0;
}