1.限定性流程转向:
break;continue;return;函数语句
2.非限定性流程转向
go to
‘\0’ 、NULL=数字0
sizeof()用来求数据类型占多少字节(包含’\0’)
strlen()用来求字符串所占字节
键盘输入的数据都是到缓存区,程序再从缓存区读取数值。
getchar()可以取出一个字符垃圾
scanf不能决定精度 如scanf(“%4.2f”,a); 就是错误的。
定义 :要分配空间,且只能定义一次。
声明:不需要非配空间,可声明多次,并可扩大作用范围
变量是对内存空间的映射
变量名=字符地址
*p=NULL; 是为了防止野指针的出现
C的存储类型有四种:auto、static、register、extern(自动、静态、寄存器、外部声明)
变量包括两部分{1.数据类型 2.存储类型)
全局变量如果加了static 则只能本文件使用
静态函数如果也加了static 也是只能本文件使用
寄存器是在cpu里面的并且数量有限
1.用寄存器时只能用基本数据类型,不能用构造类型
2.用寄存器时不能取地址
3.用寄存器时不能设成静态
进程分配方法:1.直接在硬盘上开辟(太占用资源)
2.采用软件实现(写时复制)在内存中给每个进程映射
const 用法是 靠近谁,谁便不能更改。
例如:const int*a; 一个指向const int型的指针
(*a)++是不能改变的 a是允许改变的,如a++。
int *const a; a是一个指向int型的const指针,
*a是可以改变的 ,但a是不允许改变的,定义时必须对a初始化。
int const* const a; a和*a都不允许改变,必须对a进行初始化
volatile 限制不做优化(硬件中使用)
程序->文件->函数->语句;
成员运算试图符{1.stu1.num 2.结构体类型指针->num}
stu1.name=“LI MING” 是错误的
应该用strcpy(stu1.name,“LI MING”);
scanf(“%s”,xx) 有三个默认标志:空格、回车、制表键
gets()只有1个指标:回车
结构体{1.int 型变量占四个字节,字对齐
2.short型变量占两个字节,半字对齐}
枚举类型(值是整型,但数据类型是枚举型)
1.无显示赋值时,默认值为0
2.后面的值为前面的值加1(若无赋值)