目录
10、数组
定义
一组类型相同的数
注意事项
1、下标从0开始,不是从1开始。
例如int arr[10]={1,2,3,4,5,6,7,8,9,10};输出为arr[1]=2;
2、中途可任意改值(arr[1]=20,输出为arr[1]=20)
给数组输入一组值:
11、操作符
算术操作符:
除法
/除号两端都是整数,则执行整数除法。
若两端有一个数是小数,则执行小数除法。
编译器默认7.0为double类型,7.0f 为float类型
取模%
两边操作符必须是整数
移位操作符(二进制)
移动的是二进制的位
位操作符(二进制)
赋值操作符
例如+=:
a=a+3可以写成a+=3
单目操作符
双目操作符:
有两个操作数的操作符,例如3 + 2, 5 / 2
单目操作符:
只有一个 操作数的操作符
!:
真变假,假变真
(C语言中0表示假,非0表示真)
sizeof:
可以计算类型的字节大小(sizeof(int)、sizeof(a))若后方是变量名a,可以省略括号
区别strlen:
求字符串长度
++:
分为前置++和后置++
前置++:++a
前+1,后使用
a=a+1,b=a
后置++:a++
先使用,后+1
b=a,a++
(类型):
不建议使用强制类型转换
关系操作符
逻辑操作符
&&并且:
a && b,有一假,全为假
| | 或者:
a | | b,有一真,全为真
条件操作符
若1为真,计算2
若1为假,计算3
逗号表达式
从左向右其次计算,整个表达式结果是最后一个表达式结果
下标引用、函数调用和结构成员操作符
12、常见关键字
1、关键字是预设好的,不能自己创建
2、变量的名字不能和关键字相同
typedef
为类型重命名,简化了复杂类型名称。
一个类型可以有多种命名方式
static
修饰局部变量
使得局部变量除了作用域并不销毁,空间不会回收,下一次进入函数,仍然使用上一次的值进行运算
本质上static修饰局部变量使得变量的存储位置发生了变化,本来局部变量放在内存的栈区,被static修饰后,放在内存静态区(内存分为栈区、堆区、静态区)使得变量生命周期变长了,作用域没有发生变化。
即有局部变量的作用域和全局变量的生命周期
修饰全局变量
全局变量具有外部链接属性:
编译器在编译时,每个.c文件单独编译,在一个.c中定义的变量,不能在第二个.c文件中直接引用,除非在主函数前加上extern int a;说明其来自外部文件
若static修饰全局变量,则使得全局变量只能在自己所在的源文件内部使用,其他源文件无法使用,失去了外部链接属性,变成了内部连接属性
修饰函数
与全局变量用法相同
register寄存器
电脑上有存储设备:呈金字塔结构,越往上速度越快、造价越高、价格越贵、空间越少
寄存器 4字节(几十个寄存器)匹配CPU读取数据
高速缓存 128M
内存 8G/16G/32G
硬盘 500G/1T
网盘 1T/2T(免费)
使用:
若a会被频繁大量使用,可以在定义前加上register,例如register int a=10;
即register建议将a放在寄存器中,但是否真的放入寄存器中是由编译器决定的
现在的编译器已经很聪明了,即使没有加上register关键字,也会根据实际情况,将数据放在寄存器中来提升效率
#define 定义常量和宏
定义常量:
#define M 100
#define STR "abc"
定义宏:(有参数)
#define MAX(x,y)(x>y?x:y)
宏 宏体 宏的声明部分
和函数相似