C语言知识点汇总
流程图画法

还要了解N-S流程图画法

程序设计的三个基本结构特点
采用结构化程序设计方法,程序结构清晰,易于阅读、测试、排错和修改。由于每个模块执行单一功能,模块间联系较少,使程序编制比过去更简单,程序更可靠,而且增加了可维护性,每个模块可以独立编制、测试。
顺序结构
顺序结构是一种线性、有序的结构
选择结构
选择结构是根据条件成立与否选择程序执行的通路
单分支,双分支,多分支,swith
循环结构
循环结构是重复执行一个或几个模块,直到满足某一条件为止
while 和do while(当型和直到型)
详见总结选择结构程序设计
变量
变量,常量,符号常量的区别
声明一个变量,表示可以通过声明的变量名来访问一块内存(这块内存的大小是通过类型来限制的)
常量就是一个不变的量,比如说常数
字符常量,就是不能修改的量,通常用define或者const修饰
1 | const int i = 0; |
编译器对宏定义只做单纯的文本替换(这可能造成隐性错误),而对const常量会进行检查
类型强制转化
语法(主动强制转换)
1 | 强制转换的类型 (数据); |
强制转化可能会导致数据精度的变化,比如把一个高精度类型强转为一个低精度的类型
强制转换有时会带来问题,比如赋值超出强转的类型表示的范围,造成值溢出
另外,赋值时候可能会有隐性的类型转换
1 | int a=0; |
最后a的值就是1
输入输出的形式
输入/输出通常使用 printf() 和 scanf() 两个函数
%d 格式化输出整数
%f 格式化输出浮点型数据
变量存储方式
静态存储方式,一般在编译期间就确定了 存储空间,直至整个程序结束
动态存储方式是程序运行期间,根据需要进行动态的分配存储空间
变量作用域
局部变量, 作用域仅限于函数内部, 离开作用域后就失效
全局变量, 作用域默认是整个程序
变量生存周期
自动变量auto
静态变量static
寄存器变量register
外部变量extern

详细参考顺序程序设计
数组
一维数组
一段连续的内存空间,存储的一系列类型相同的数据
二维数组
二维数组存储方式类似一维数组,不过二维数组的第一个元素还是一个一维数组
声明
1 | int a[2][2]; |
二维数组作为函数参数
1 | void Func(int (*array)[10]); |
声明参数是一个指针,它指向具有10个元素的一维数组
1 | void Func(int *array[10]); |
声明了一个数组,该数组有10个元素,每个元素都是一个指向整型对象的指针
二维数组的输出
例子
1 |
|
考点
字符数组
声明
1 | char c[5]; |
C中没有专门的字符串变量,通常用一个字符数组来存放一个字符串,字符串以’\0’作为串的结束符
输出例子
1 |
|
数值数组
输入输出差别
数值数组常见的控制显示的格式符略
字符串
字符串的输出函数
1 | int puts(char const*strPtr); |
输出字符串,传入的实参可以是字符串数组也也可以是字符指针
字符串的输入
1 | char *gets(char *strptr); |
输入一个字符串存放到指针strptr指向的字符数组
获取字符串长度
1 | int strlen(char const*string); |
获取字符串的长度,返回字符的个数,不包括\0
结束符
字符串拷贝函数
1 | char *strcpy(char*des,char*src); |
把src指向的字符串拷贝到des指向的字符串数组中去,结束符也一同进行拷贝,size参数也可以拷贝制定长度的字符串
字符串的连接函数
1 | char * strcat(const *char str1,const *char str2); |
将str2指向的字符串连接到str1指向的字符后面,会删除str1后
面的’\0’,返回str1指向字符串的首地址
字符串比较函数
1 | int strcmp(const char * str1,const char *str2); |
按照ascii码来进行比较,并由函数返回值进行判断
返回0,字符串1等于字符串2,
大于0,字符串1大于字符串2,
小于0,字符串1小于字符串2,
字符串分割函数
1 | char* strtok(char *str,const char *delimiters); |
根据delimiters指向的分割符号,将str指向的字符串分割成若干个子字符串,返回的是分割出的子字符串
字符串中是否包含字符
1 | char * strchr(const char *,int c); |
判断字符串中是否包含字符串
函数
声明
1 | int a(int x,int y); |
函数声明声明了函数的名字,参数个数,参数类型,函数返回类型
值传递的特点
从实参到实参是参数传递,传递的是一份值的拷贝
例子
递归函数,递归调用
例子:求和,阶乘
分段函数
判断素数,开平方数,求整数因子,最大公约数(辗转相除)求和
指针
指针与其他类型的关系
- 字符
- 数组
- 结构体,和结构体变量
指针作为函数参数,进行函数调用
结构体
结构体
形式
成员引用,赋值,输入,输出
结构体指针
枚举
循环,分支判断
文件操作
文件指针,打开读写