程序的执行总是从main函数开始
#头文件可以放中间 一条c语句对应转换成一条机器指令❎
C语言对预处理命令行的处理是在程序执行的过程中进行的❎
函数
形参不可以传回对应实参
数据只能从实参单向传递给实参
函数形参和实参分别占用不同的存储单元
没有指定函数形参存储类别是自动auto 使用时才占用内存单元的变量auto和register
算法

算法的有穷性:算法程序的运行时间是有限的
算法时间复杂度的度量:执行算法所需要的基本运算次数
常量
定义常量必须用类型名设定常量类型❎
常量可以用符号名来代表 八进制要用数字的0开头
标识符只能由数字,字母,下划线构成,不能以数字开头 _123 √
实数2.00E-01 eE前后必须有数字,且指数部分必须是整数 属于整数类0x518
数据常量115L
算数>关系>赋值 (算术优先)
整型常量和实型常量都是数值型常量
字符常量可以参与任何整数运算 char 1字节
sizeof(double)是一个整型表达式
运算对象必须是整型数的运算符%
字符串,变量
转义字符用\开头
字符变量在定义时能赋初值
可以取变量的地址赋给同类型的变量指针
空串比空格打头的字符串小
合法变量_10_
含有空格字符的字符串 gets()
设有指针变量为double *p,则p+1将指针p移动八个字节
变量名不可以与关键字同名 符号常量是指在程序中通过宏定义用一个符号名来代表一个常量
预定义标识符可用作用户标识符,但失去原有含义
不能用字符串常量对字符数组名进行整体操作
字符串数组,是指数组中的每个元素是一个存放字符串的一堆数组
在逻辑上,可以把二维数组看成一个具有行和列的表格或矩阵
C语言本身没有提供对字符串进行整体操作的运算符
语句
赋值语句是一种执行语句,必须放在函数的可执行部分
C语言的每条可执行语句和非执行语句最终都被转换为二进制机器指令❎
只要字符串s1等于s2,则执行ST 三种循环for,while,do-while可以互相嵌套
与while(E)中的(E)不等价的是(E==0)
do-while语句构成的循环,当while语句中的表达式值为0时结束循环
while 条件表达式的执行次数总是比循环体的执行多一次
只能在循环体内和switch语句体内使用break语句
continue是用来结束本次循环,而switch不是循环。
文件
C语言程序的模块化通过函数实现
与队列结构有关联:先到先服务的作业调度
所有类型的指针变量所占内存大小是一样的
文件指针是指程序中用FILE定义的指针变量
在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
宏替换没有数据类型限制
当文件的读写操作完成后,必须将它关闭,否则可能导致数据丢失
当程序中对文件的所以操作完成之后必须调用fclose(fp)函数关闭文件
从文件f中读取长度不超过n-1的字符串存入指针s所指的内存
%c就是char对应单引号
%s是字符串对应双引号
%5.0f 设置0位小数,也就是只输出整数部分,不足5位的补空格。
%0.5f显示五位小数
%f浮点数
double占字节数 8
关键字
define不是关键字,是编译器实现的,用来定义宏的预处理指令
switch中常用关键字:case,break,default
scanf中尽量不要写中文和\n
在scanf函数中的格式控制字符串是为了输入数据用的,不会输到屏幕上
表达式 'a'>'b'的结果是假
‖或 &&且都有短路现象
注释不可以夹在变量名或关键字的中间
合法赋值x=y==5 char A=65+1,b='b';
奇数if(i%2==1)