要点:
-
标识符:只能包含数字、字母和下划线,不能以数字开头,区分大小写。
-
关键字:整型(int、short 、long),字符型(char)、浮点型(float、double)、结构型(struct)、联合类型(union)、枚举型(enum)、指针(char *、int *、int **)。
-
单引号是字符,双引号是字符串。
-
可以通过 sizeof 关键字获取某个数据类型所占用的空间 。
-
整型打印格式:%d(int)、%u(unsigned int)
-
字符型:char, 使用 %c 进行输出。
-
浮点数打印: %f
-
大小写转换:大写转小写:+32 / +0x20
-
输入函数:scanf( "%d", &x ); //注意需要 & +
-
运算符的优先级:! > 算术运算符 > 关系运算符 > && > || > 条件运算符 > 赋值运算符 > 逗号运算符
-
% 取模 (取余) 运算符的两个操作数 只能为整数
-
!:非, &&:与,||:或
-
条件运算符:表达式1 ? 表达式2 : 表达式3 //printf("%d\n", 3>4?3:4); //取最大值
-
顺序结构:if (表达式) {语句1} else if (表达式) {语句2} else{语句3}
-
switch语句:witch(表达式) {case 表达式: 语句; break; case 表达式: 语句; break;}
-
循环结构:while (表达式) { 语句 }
-
do { 语句 } while ( 表达式 );
-
for ( 表达式1; 表达式2;表达式3) { 语句 }
-
当break语句用于do-while、for、while循环语句中时, 可使程序终止循环而执行循环后面的语
句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 -
continue 语句用于循环结构中,作用是结束本次循环,继续下次循环。
-
一维数组: int a[ 10 ]; //定义一个数组,名字叫a,有10个成员。
-
二维数组:数据类型 数组名[常量1] [常量2]。 int a[3][4];
-
有参函数:类型标识符 函数名(形参) { 函数体 }
-
无参函数:类型标识符 函数名() { 函数体 }
-
main函数是C程序的主函数,是会被自动执行到的,C程序中有且只有一个main函数。
-
定义 在{ }内的变量,称之为局部变量。
-
一个函数在它的 函数体内调用自身称为递归调用,这种函数称为递归函数。
-
这种以 #号开头的命令 称为预处理命令,C语言提供了多种预处理功能,如 宏定义、文件包含、条件编译 等。
-
在C语言源程序中允许 用一个标识符 来 表示一个字符串,称为“宏”。 #define 标识符 字符串 #define PI 3.14,编译器在预处理时,会将源程序中所有的“PI”替换成“3.14”。
-
我们可以在CLion的“Terminal”下输入编译命令:gcc -E main.c -o main.i, 通过预处理将main.c 编译成 main.i 文件。
- 使用 尖括号 表示 在开发环境的头文件目录 下查找,而不在源文件目录去查找。
- 使用 双引号 则表示首先 在当前的源文件目录 中查找,如果没有找到才到包含目录中去找。
-
#ifdef 标识符 程序段 #else 程序段 #endif
-
#if 0 代码段 #endif
-
指针变量的值 代表这个指针指向了以这个值为首地址的那块 内存空间。
-
指针变量赋值 为其他变量的地址:&:取地址运算符。
-
野指针: int *p = NUll;
-
一级指针作为形参: void func ( int *a, int n) { }
-
内存释放: free 函数
-
malloc: p = ( char *)malloc( 10 )
-
字符串:被双引号引用的字符集合!例如:”hello” 、”world”,或者以 '\0' 结尾的字符数组!
-
可以把字符串当做字符数组一样处理,字符数组不一定可以当做字符串梳理,为什么?
因为字符数组中不一定有 '\0'。 -
atoi 函数: int val = atoi(p);
-
atof 函数: double val = atof(p);
-
strlen 函数: printf("%d %d\n", strlen(ch), strlen(arr));
-
strcpy 函数:strcpy(dst, src);
-
strncpy 函数: strncpy( p, "world", 7);
-
strcat 函数:将src字符串连接到dest的尾部,‘\0’也会追加过去。 strcat(p, "world", 3);
-
strcmp 函数:会按照字典顺序 逐个比较两个字符串的字符。 printf("%d\n", strcmp("hello", "hello"));
-
strstr 函数:是C语言中的一个字符串查找函数,用于 在一个字符串中查找子串的出现位置。 char *p = strstr(src, "abcd");
-
strtok 函数:是C语言中的字符串分割函数,用于将一个字符串 按照指定的分隔符进行分割。 char a[100] = "abc-efg-hijk"; char *s = strtok(a, "-");
-
函数指针: typedef int (*FUNC)(int, int);
-
结构体:struct student{ char name[32]; char sex; int age; char tel[12]; char addr[100];};
- struct 结构体名称 变 量名; struct student s;
- struct 结构体名称 *变量名; struct student *p;
- struct 结构体名称 变量名[长度]; struct student s[10];
-
typedef 重定义结构体,typedef struct stu* p_stu;
-
联合体/共用体:union 名称 { 成员变量1; 成员变量2; 成员变量n;}
-
枚举: enum 类型名 { 成员1,成员2,成员n };
-
C程序的基本结构,源文件:后缀为 .c 的文件, 头文件:后缀为 .h 的文件。
-
头文件:宏(define PI 3.14)、结构体、全局变量的声明(extern int cnt;)、函数的声明( int func(int x, char y); )。
-
static 修饰局部变量,如果全局变量 不想被其他文件访问到(只能在定义的文件内被访问到),可以使用static修饰该全局变量。 static int cnt = 10;
-
const 使用:被const修饰的对象是只读的,const int * p; 该语句表示指向整形常量 的指针,它指向的值不能修改。
-
#define 是在编译的 预处理阶段 起作用,而 const 是在 编译、运行 的时候起作用。