1.环境设置/程序结构/基本语法
2.数据类型/变量/常量
3.存储类/运算符/判断/循环/函数/作用域规则
4.数组
5.enum(枚举)/字符串
(1)enum是一种弄基本的数据类型,用于定义一组具有离散值的常量。枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。
枚举语法定义格式:
enum 枚举名 {枚举元素1,枚举元素2,...};
注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
枚举变量的定义
(1)先定义枚举类型,再定义枚举变量
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;
(2)定义枚举类型的同时定义枚举变量
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;
(3)省略枚举名称,直接定义枚举变量
enum { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;
例1:
#include <stdio.h> enum season {spring, summer=3, autumn, winter}; int main() { enum season sea=spring; printf("%d",sea); return 0; }
例2:
#include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; int main() { enum DAY day; day = WED; printf("%d",day); return 0; }
枚举是连续的是可以进行遍历的:
#include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day; int main() { // 遍历枚举元素 for (day = MON; day <= SUN; day++) { printf("枚举元素:%d \n", day); } }
但是不连续是不可以进行遍历的:
enum { ENUM_0, ENUM_10 = 10, ENUM_11 };
例:在switch中的应用
#include <stdio.h> #include <stdlib.h> int main() { enum color { red=1, green, blue }; enum color favorite_color; /* 用户输入数字来选择颜色 */ printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): "); scanf("%u", &favorite_color); /* 输出结果 */ switch (favorite_color) { case red: printf("你喜欢的颜色是红色"); break; case green: printf("你喜欢的颜色是绿色"); break; case blue: printf("你喜欢的颜色是蓝色"); break; default: printf("你没有选择你喜欢的颜色"); } return 0; }
例:将枚举类型转换为整数
#include <stdio.h> #include <stdlib.h> int main() { enum day { saturday, sunday, monday, tuesday, wednesday, thursday, friday } workday; int a=1; enum day weekend; weekend = ( enum day ) a; //类型转换 //weekend = a; //错误 printf("weekend:%d",weekend); return 0; }
(2)字符串
字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。
空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是空字符。
例:
char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
依据数组初始化规则,您可以把上面的语句写成以下语句:
char site[] = "RUNOOB";
例:
#include<stdio.h> int main() { char site[7]={'R','U','N','O','O','B','\0'}; printf("%s",site); return 0; }
C 中有大量操作字符串的函数:
(1)strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
(2)strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。
(3)strlen(s1); 返回字符串 s1 的长度。
(4)strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
(5)strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
(6)strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
#include <stdio.h> #include <string.h> int main () { char str1[14] = "runoob"; char str2[14] = "google"; char str3[14]; int len ; /* 复制 str1 到 str3 */ strcpy(str3, str1); printf("strcpy( str3, str1) : %s\n", str3 ); /* 连接 str1 和 str2 */ strcat( str1, str2); printf("strcat( str1, str2): %s\n", str1 ); /* 连接后,str1 的总长度 */ len = strlen(str1); printf("strlen(str1) : %d\n", len ); return 0; }
6.结构体
7.指针/函数指针与回调函数
如动态内存分配,没有指针是无法执行的。
每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。
以下是有效的指针声明:
int *ip; /* 一个整型的指针 */
double *dp; /* 一个 double 型的指针 */
float *fp; /* 一个浮点型的指针 */
char *ch; /* 一个字符型的指针 */
例:
#include <stdio.h>
int main ()
{
int var = 20; /* 实际变量的声明 */
int *ip; /* 指针变量的声明 */
ip = &var; /* 在指针变量中存储 var 的地址 */
printf("var 变量的地址: %p\n", &var );
/* 在指针变量中存储的地址 */
printf("ip 变量存储的地址: %p\n", ip );
/* 使用指针访问值 */
printf("*ip 变量的值: %d\n", *ip );
return 0;
}
空指针:
#include <stdio.h>
int main ()
{
int *ptr = NULL;
printf("ptr 的地址是 %p\n", ptr );
return 0;
}
8.共用体
9.位域/typedef/输入输出
文件读写/预处理器/头文件
11.强制类型转换/错误处理
12.递归/可变参数
13.内存管理
14.命令行参数
标签:int,enum,基础,枚举,printf,include,day From: https://www.cnblogs.com/ZongZhe/p/17574403.html