认识c语言
1.C语言是一门编译型而且面向过程的语言。
2.所有的exe文件都是二进制。
3.代码经过编译器编译生成一个可执行的二进制文件
4.main函数是程序的入口,main函数有且只能有一个。
5.程序只要运行就会被加载到内存
数据类型
各种各样的数据类型是为了能表达生活中丰富多彩的值。
char 字符数据类型
short 短整型
int 整形
long 长整型
long long 更长的整形
float 单精度浮点数
double 双精度浮点数
sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。
系统会根据数据类型的大小分配内存空间
变量
变量:变量名,变量空间,变量地址
变量在内存中被定义,变量的存在原因就是合理的使用内存。
定义: 开辟内存空间。
全局变量:代码块外部
局部变量:代码块外部
局部变量与全局变量同名优先使用局部变量,但是尽量不要定义成同名的。
作用域:一段程序代码中所用到的名字并不总是有效/可用的,
而限定这个名字的可用性的代码范围就是这个名字的作用域
生命周期:变量创建到销毁的一个时间段
作用域 | 生命周期 | |
---|---|---|
局部变量 | 变量所在的局部范围 | 进入作用域生命周期开始,出作用域生命周期结束 |
全局变量 | 整个工程 | 整个程序的生命周期 |
常量
字面常量
3.14
3000
const修饰的常变量
用const修饰的变量不能被直接修改
#define定义的标识符常量
见名知意,便于维护
#define red 1//一般在头文件下面
枚举常量
enum sex
{
Male,
Female,
Secret,
}
字符串+转义字符+注释
字符串保存的两种方式:
char str[]="hello";//等价于charstr[]={'h','e','l','l','o','\0'}
char* str="hello";
字符串默认以\0结束,但是\0不被算进字符串内容
转义字符:
转义字符 | 释义 |
---|---|
\? | 书写连续多个问号时防止被解析为3字母词 |
’ | 表示字符常量’ |
" | 表示一个字符串内部的" |
\ | 表示一个\防止他被解释为转义序列符 |
\a | 警告字符,蜂鸣声 |
\b | 退格符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | 表示1-3个8进制数字如\130x |
\xdd | 表示2个16进制数字如x30 0 |
进制的简单计算:
2进制表示11:1 * 21* 1* 20 = 3
16进制表示/x3f:3* 161 * 15* 160=63
选择语句
c中非0为真,0为假
条件中一般写成 0==x,防止写成一个等号
int main{
if(条件){
//条件成立
//执行改代码块中的代码
}
else{
//条件不成立
//执行改代码块中的代码
}
}
循环语句
1.while
//条件不变化就是死循环,
while(条件){
//执行语句
}
int i=0;//条件设置
while(i<=10)//条件判定{
i=i+1;//条件更新
}
2.for
for(条件设置;条件判定;条件更新){
}
3.do…while
do
{
循环体;
}
while (条件表达);
//先执行一次在判定
函数
简化代码,代码复用
在面向过程中,我需要我编写我调用
数组
一组相同元素的集合。
定义数组 int arr[ ]={ },[]里面不能是变量。
size=sizeof(arr)/sizeof(arr[0])
求数组大小
数组不能直接赋值,输出或赋值都要带上下标。
操作符
算数操作符
+ - * / %
移位操作符
>> <<
位操作符
& ^ |
赋值操作符
= += -= *= &= ^= |= >>= <<=
单目操作符
! 逻辑反操作
- 负值
- 正值
& 取地址
sizeof 操作数的类型长度
~ 对一个数的二进制按位取反
–
++ 前置,或后置
解引用
(类型) 强制类型转换
关系操作符
> >= < <= != ==
逻辑操作符
&&
||
条件操作符
exp?exp2:exp3
逗号表达式
exp1,eexp2,exp3
下标引用,函数调用和结构成员
[] () . ->
常见关键字
static关键字
修饰 | 全局变量 | 局部变量 |
---|---|---|
作用域 | 由整个工程变为本源文件 | 作用域不变依然为变量所在的局部范围 |
生命周期 | 不变是整个工程 | 原来的生命周期为进入作用域,出作用域。加上后改变了生命周期,让其出了自己的作用域依然存在。 |
修饰函数是只能在本源文件内使用
define定义常量和宏
#define定义的标识符常量
见名知意,便于维护
指针
为什么有指针?
访问内存单元地址
什么是指针?
指针是地址
指针变量是变量
结构体
结构体使c语言有能力描述复杂类型,
比如一个学生包含,姓名,性别,成绩,学号等变量
struct stu
{
char name[20];
int age;
char sex[5];
char id[5];
}
struct stu tom={
"周某",45,"男","13245"};