一、认识C语言
人与人之间通过汉语、英语和日语等语言交流
那么人和计算机之间的交流也有语言。-----------C语言/c++/Java/python等。现在已经有上千种计算机语言了。
- C语言擅长底层开发
计算机底层有,操作系统(Windows,Linux,Mac)、驱动器、硬件
C语言可以用来写操作系统,Linux就是由C语言写的。 - C语言的发展
低级语言 ————>————>高级语言
二进制指令 ----->汇编指令------>B语言-------->C语言
101010。。。。。 ASF。。。。。。。。。高级语言 - C语言的国际标准
ANSIC(美国标准)
以前的:C89、C90、C99、C11 - 编辑器
GCC、MSVC、Clang
通过 (编译+链接)将
text.c( .c的源文件) --------生成-------->text.exe( .exe的可执行文件)
main()主函数
- 函数是构成C语言程序的基本单位
- C语言程序中一定要有主函数
- 代码是从主函数开始运行的(主函数是程序的入口)
- 标准的主函数写法
int main()
{
return 0;
}
库函数
printf()输出函数,将电脑里的数据在屏幕上显示出来
scanf()输入函数,将你按的键盘上的一些字符输入电脑
使用这两个函数时需要包括头文件
#include <stdio.h>
include包括、std是standard标准、i是input、o是output、.h是头文件
数据的类型
- 整形---------整数
- 浮点型----------小数
- 字符型----------字母
数据类型 | 大小/字节 | |
---|---|---|
char | 字符型 | 1 |
short | 短整型 | 2 |
int | 整形 | |
long | 长整型 | 4 |
long long | 长长整形 | 8 |
float | 单精度浮点型 | 4 |
doubt | 双精度浮点型 | 8 |
注:没有字符串类型,可以定义字符数组表示字符串。char arr[10];
变量和常量
变量
值会改变的量。
- 局部变量:{}内部定义的变量,作用域是变量所在的花括号范围,生命周期是进作用域创建出作用域销毁。
- 全局变量:{}外部定义的变量,作用域是整个程序,生命周期和整个程序一样
- 变量的作用域:变量能够被使用的范围
- 变量的生命周期:变量创建后存在不被销毁的时间
常量
值不会改变的量。
-
字面常量
30-整形
3.14-浮点
‘w’-字符
“abc”- 字符串 -
const修饰的常变量
将变量属性变为常量属性,不能在给它赋值了
使用:
const int a = 10;//a本质还还是变量,只是拥有了常量属性
a = 20;//不能给a赋值了,现在的a相当于常量
- define定义标识符常量
- 枚举常量
strlen()函数
求字符串长度的一个函数,需要头文件string,h
int len = strlen("abv")
转义字符
\+字符:转变原本字符的意思
\? | 在书写连续多个问号时使用,防止他们被解析成字母词 |
---|---|
\’ | 用于表示字符常量 |
\" | 用于表示一个字符串内的双引号 |
\\。 | 没有那个句号。用于表示一个反斜杠,防止它被解析成为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 禁止符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130x |
\xdd | dd表示2个十六进制数字。如:\x30 |
注释的好处
- 将不用的代码注释掉,不运行他。
- 对复杂的代码注释说明,增加代码的可读性
- 便于梳理写的代码的思路
课件学习的方法
- 多练
- 学会画图(可视化)
- 多调试
选择语句
- if else
- switch
循环语句
- while
- for
- do…while
函数
- 长啥样?
Add/函数名(intx,inty)//函数参数(形参)
{
..........函数体
}
- 理解
数组
一组相同类型元素的集合。
-
例子
int arr[10] = {1,5,5 ,7 , 5 ,8};
//定义了一个整形数组,[10]表示最多可以放10个元素。 -
下标
数组里的每一元素都有对应的下标
下标从零开始,第一个元素的下标是0,第二个元素的下标是1,依次对应。 -
数组的使用
根据下标使用:arr[5] = 8;
操作符
-
算术操作符
+、-、*、/、% -
位移操作符
、>>、<<(涉及二进制) -
位操作符
&、^、| -
赋值操作符
= 、+= 、-= 、*= 、/= 、^= 、|= 、&= 、>>= 、<<= -
单目操作符
-
(类型)强制类型转化
-
关系操作符
> , >= , < , <= , != , == -
逻辑操作符
&&:逻辑与 , ||:逻辑或 -
条件操作符
三目操作符有三个操作数
exp1 ? exp2 : exp3
真……勾……叉
假……叉……勾 -
下表引用、函数调用、结构成员
[ ] 、 ()、. 、—>
关键词
C语言内部规定的比较关键的词
- typedef
数据类型的定义
用法:为名较长的类型重命名。例:typedef nosize int num
num就是nosize int的新名字。 - static
1、修饰局部变量
使局部变量出作用域后不用被销毁
本质:改变了局部变量的存储位置,使它从栈区变成静态区。
内存
2、修饰全局变量
使其他源文件不能使用该变量。
本质:将全局变量的外部链接属性变为内部链接属性。其内存的存储位置同局部变量一样会改变。
3、修饰函数
是函数在其他源文件中不能被调用。
本质:函数也具有外部链接属性。函数的外部链接属性变为内部链接属性了。
指针
地址,二进制序列编号
-
原理:
62位电脑有64根地址线,每根地址都可以产生正负两种电信号,正对1,负对0,64根地址线一共可以产生
262个64位二进制序列序号,如果与内存单元一一对应的话,可以编号262个内存单元,一个内存单元的大小是1字节,内存的大小一共是1b*262=16GB.
补充:内存被分为一比特一比特的内存单元 -
首地址
如果一个变量的需要4个字节,内存会给他四个单元的空间,取第一个单元的地址即首地址为该变量的地址。 -
%p
打印地址的控制符 -
指针变量p
用来放指针的变量
int a =10;
int* p = &a;
*:表示p是指针(口头上)
int:表示指向的对象a是整形。
-
解引用操作符:*
通过指针找回变量
*p = 20;
// *p相当于变量a。 -
指针的大小
和存放地址所需的大小一样
char A= 'a';
char* p = &A;
int B = sizeof(char*);
结构体
-
概念
自定义数据类型。将单一类型组合在一起的类型用于描述复杂的类型如:人。 -
使用
先创建,在使用。
struct Ren
{
char name[10]
char sex[10];
long long tele;
};
int main()
{
struct Ren s = {"dengjianing", "nan", 113312631563};
printf("%c, %d, %c, %d", s•name, s•sex, s•tele); //打印结构体里的成员,通过'结构体变量名•成员名'
找到结构体成员。
struct stu *ps = &s;//通过指针变量找到结构体成员并打印的两种办法。
printf("%c, %d, %c, %d", ps->name, ps->age, ps->sex, ps->tele);
printf("%c, %d, %c, %d", (ps*)•name, (ps*)•age, (ps*)•sex, (ps*)•tele);
return 0;