学习时间2022.8.7
目录
01.初识C语言(1)
什么是C语言?
C语言是一门计算机语言。
计算机语言是什么?
人和计算机交流的语言 C/C/JAVA/Python
语言的发展:
二进制语言 101000010101就只能这样写 低级语言
汇编语言 后来 ADD -10100001-助记符
B语言
C语言 C++ 高级语言
C语言一开始不成熟-成熟-流行 然后有了国际标准
1.1第一个C语言程序
写C代码:
(1).创建工程或者新建项目
(2).创建文件
C代码 .c文件-源文件 .h文件-头文件(head)
添加源文件(比如test.c)
(3).写代码
//包含一个叫stdio.h的文件
#include<stdio.h>
int main() //int是整型
//main前面的int表示main函数调用返回一个整型值
{
//这里完成任务
//在屏幕上输入hello world
//函数
printf("hello world\n");
return 0;
}
ctrl + f5 运行代码 / ctrl+fn+F5
main()函数-主函数-程序的入口
一个程序中不能没有main函数,main函数有且仅有一个。
printf-库函数-C语言本身提供给我们使用的函数
1.2 数据类型
char | 字符数据类型 |
short | 短整型 |
int | 整型 |
long | 长整型 |
long long | 更长的整型 |
float | 单精度浮点数 |
double | 双精度浮点数 |
1.2.1char 字符类型
int main()
{
char ch = 'A';//像内存申请了一块空间存放字符A
printf("%c\n",ch);//%c--打印字符格式的数据
return 0;
}
1.2.2 int 整型
int main()
{
int age = 20;
printf("%d\n",age);//%d--打印整型十进制数据
}
1.2.3 short int 短整型 long int 长整型 longlong int 更长的整型
1.2.4 float
int main()
{
float f = 5.0;
printf("%f\n",f);
return 0;
}
1.2.5 double
int main()
{
double d = 3.14;
printf("%lf\n",f);
return 0;
}
1.2.6
%d 打印整型 %c打印字符 %f 打印浮点数字-打印小数 %p 以地址的形式进行打印
1.2.7 字节
计算机中的单位
最小的单位-bit-比特位--只能存1或者0--一个比特位用来存放一个二进制位
byte-字节-一个字节是8个比特位
kb-1024个字节
mb -104个kb
gb-1024个mb
tb-1024个gb
pb-1024个pb
1.2.8大小
数据类型 | 字节大小 | 放的二进制可能性 |
char | 1 | 2^8 |
short | 2 | 2^16 |
int | 4 | 2^32 |
long | 4/8 | 2^32/2^64 |
long long | 8 | 2^64 |
float | 4 | 2^32 |
double | 8 | 2^64 |
C语言标准规定 sizeof(long)>=sizeof(int)
1.3变量
1.3.1局部变量和全局变量
全局变量:定义在代码块({})之外的变量
局部变量:定义在代码块({})内部
当局部变量和全局变量的名字建议不要相同-容易误会产生bug
当局部变量和全局变量相同时-局部变量会优先
1.3.2变量的使用
int main()
{
//计算两个数的和
int num1 = 0;
int num2 = 0;
int sum = 0;
//输入数据-使用函数scanf
scanf("%d%d",&num1,&num2);//&取地址符号
// C语言规定,变量要定义在当前代码快的最前面
sum = num1 + num2;
printf("sum = %d\n",sum);
return 0;
}
scanf是C语言提供的
scanf_s不是标准C语言提供的,是VS编译器提供的。
1.3.3变量的作用域和生命周期
局部变量的作用域是变量所在的局部范围
全局变量的作用域是整个工程
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期是:整个程序的生命周期。
1.3.4 #define_CRT_SECURE_NO_WARNINGS 1
加载源文件的第一行
我们将它添加在如下文件中
之后打开之后就会带有默认这句话
1.4常量
1.4.1C语言中的常量有以下几种:
(1).字面常量
(2).const 修饰的常变量
#include<stdio.h>
int main()
{
int num = 4;
printf("%d\n",num);
num = 8;
printf("%d\n",num);
return 0;
}
那如果我想要num = 4 变为一个常量
在前面添加 const即可
const 常属性
(3).#define 定义的标识符常量
#include<stdio.h>
#define MAX 10
int main()
{
int arr[MAX] = {0};
printf("%d\n",Max);
return 0;
}
(4).枚举常量
枚举:一一列举
枚举关键 - enum
enum Sex
{
MALE,
FEMALE,
SECRET
};
int main()
{
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
return 0;
}
枚举常量不能改变
1.5字符串
字符串:由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
字符串结束标志是\0 转义字符。在计算字符串长度的时候\0是结束标志,不算作字符串内容。
\t 水平制表符
转义字符
C语言的注释风格 /*xxxxxxx*/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxx
可以注释一行也可以注释多行
1.6语句
1.6.1 选择语句
int main()
{
int input = 0;
printf("加入公司\n");
printf("你要好好学习吗?(1/0):");
scanf("%d,&input");//1/0
if(input == 1)
printf("好的offer\n");
else
printf("找不到工作\n");
return 0;
}
1.6.2循环语句
C语言中如何实现循环呢?
(1).while语句
(2)for语句
(3)do...while语句
1.7函数
由库函数和自定义函数
1.8数组
数组:一种相同类型元素的集合
数组定义:
int main()
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //定于一个存放10个整数的数组
return 0;
}
数组的使用是通过下标来使用
1.9操作符
算术操作符: + - * /取余 %取模
移位操作符: >> << 移(2进制)位操作符,把二进制序列向左移动
位操作符: & 按位与 (2进制)位操作 0和1进行或结果由一个1就行
^按位或 对应的二进制位相同,则为0.对应的二进制位相异,则为1.
|按位异或
赋值操作符: = -= += *= /= &= ^= |= >>= <<=
单目操作符:
! | 逻辑反操作 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
-- | 前置、后置-- |
++ | 前置、后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
关系操作符:>= != < ==
逻辑操作符: && 逻辑与 两边都为真才为真 一个为假都为假
||逻辑或 A和B里一个为真都为真
条件操作符: exp1?exp2:exp3
exp1正确执行exp2否则执行exp3
下标引用、函数调用和结构成员:
[ ] 下标引用操作符
() 函数调用操作符
. ->