Git
1、Git是Linus为了帮助管理Linux内核开发 而开发的一个开放源码的分布式版本控制软件。
2、Git和TortoiseGit的作用。
Git中有各种命令行操作,来维护代码,可以将代码推送到代码托管平台。
TortoiseGit是将Git中各自命令行操作转化为图形化操作。
3、Git的维护操作
add添加,commit提交,push推送
将gitee中的仓库克隆到本地后,在本地仓库中右击鼠标才会出现add。
修改已经提交过的文件,文件图标会有红色标识,此时无需add(新增文件才需要add),直接commit和push。
delete删除,commit提交,push推送
《并没有完全了解各个操作的具体作用,不要乱猜测,直接查找正确的解释》
4、注意
gitee没有绿方块:gitee网站的邮箱和本地的邮箱不匹配,本地邮箱在小乌龟设置中修改。
gitee上的邮箱要公开
用户名或密码错误:将本地仓库里的用户和密码删除,删除windows的凭据管理器中的gitee的凭据。
用户名:gitee网站中@后面的就是用户名
不要将仓库克隆到Git的安装路径下
常量
字面常量
字面常量的作用:用于给变量赋值
-
整型常量(20)
-
浮点型常量(3.14159)
-
字符常量('a')
-
字符串常量("abcdef")
const修饰的常变量
1、被const修饰的变量在语法层面上不能被修改,本质上其实还是变量。
const int n=10;
int arr[n];//C99标准中该写法为错误
C90标准,数组指定数组元素个数时,[]内必须是常量表达式,被const修饰的n本质还是变量,不能写在里面。
C99标准,支持变长数组,定义数组时[]内可以写变量。
2、const的作用:手动控制变量的值不被修改。
#define定义的标识符常量
1、被定义的文本是整数的时候,就可以把标识符常量放到数组的[]中。
#define M 100
int arr[M];
这里的M就是标识符常量
.c源文件>预编译>编译>汇编>链接>运行.exe
#define预处理指令(又称为宏定义)在预编译(预处理)时,会将M替换成100.。
预处理指令通常写在函数外(写在函数里面没有语法错误),但必须遵循先定义后使用。
#include也是预处理指令
枚举常量
enum Sex//使用enum定义枚举类型
{
MALE,
FEMALE,
SECRET
};
int main()
{
enum Sex a=MALE;//定义a为枚举变量,并且初始化为MALE。
printf("%d %d %d",MALE,FEMALE,SECRET);//0 1 2
return 0;
}
枚举类型Sex 枚举变量a 枚举常量MALE
1、枚举类型是自定义类型,这种类型定义的变量,其可能值是多个枚举常量中的一个。
2、枚举常量也是有具体值的,默认第一个枚举常量值为0,后面的枚举常量值依次+1。
3、枚举常量在枚举类型定义时可以赋初值,其他地方不能重新给枚举常量重新赋值。
4、常量名建议全部大写,包括枚举常量。
5、枚举类型定义时,最后一个枚举常量后不需要逗号。
字符串
1、C语言有字符类型,没有字符串类型。
2、字符串的表示方式:由双引号引起来的一串字符。
3、双引号括起来的字符串尾部默认跟一个转义字符'\0',它是字符串的结束标志,不作为字符串内容。
//以下两个数组存储内容一样
char arr[]={'a','b','c',0};
char arr[]={'a','b','c','\0'};
空字符'\0'的ASCII码值是0
字符'0'的ASCII码值是48
4、字符串赋值给数组时,要记得给数组足够空间存放'\0',不然打印字符串没有'\0'终止打印,使用printf打印字符粗时就无法停止,后面就会乱码。
数组的内存是在连续的内存空间中的一小段,超过数组空间范围,会一直打印后面未知的数据,直到打印遇到'\0'才停止。
//将字符串abc存入数组
char arr1[]="abc";//正确
char arr2[]={'a','b','c'};//错误
arr1的大小是4字节,arr2的大小是3字节。
定义数组时,未指定数组大小,数组的大小由初始化的内容决定。
5、strlen()函数求字符串长度,计算的是'\0'之前出现字符的个数。
#include<string.h>
6、字符串的地址
char * p = "abcd";
指针变量p指向首字符的地址
转义字符
1、反斜杠\后面加字符,来表示那些不能显示的ASCII字符
\0:终止符、空字符
\t:水平制表符,四个空格。
\n:换行符
\a:警告字符、蜂鸣
\b:将光标向左退回一格,如果继续输出内容会把光标右边的内容覆盖。
\r:回车,光标回到这行的首部。
\?:代替 ? 有些编译器中打印 ??) 时,会被解析为 ]。打印 ??( 时,会被解析为 [ 。
\':代替 '
\":代替 "
\\:代替 \
\***:这种格式说明它表示八进制的ASCII码值对应字符。(范围:0~261)
\x**:这种格式说明它表示十六进制的ASCII码值对应字符。(x必须小写,范围:0~7F)
'/'称为斜杆,'\'称为反斜杆。
联想记忆:顺应右手手势的就是斜杆。
2、题目
printf("%d\n", strlen("c:\test\628\test.c"));
结果为14,\62被解析成一个转义字符。
ASCII
1、ASCII码表
2、
int a = 'A';
printf("%c",a);
打印结果为A
字符底层存储的时候用的是字符的ASCII码值,所以可以用整型变量储存字符常量。
进制转换
1、其他进制>>十进制
这里以八进制数为例,对于其他进制(包括十进制)方式一样。
这种方式能一次性转换整数部分和小数部分
这里的8的次方表示对应位置的权重
2、十进制>>其他进制
整数部分转换:用除法
小数部分转换:用乘法
十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数,所以在存储这类小数时无法精确存储。例如:0.51(十进制) >> 0.100000101000111101011100001010001111010111...(二进制)
3、二进制>>八进制
从低位向高位依次换算,高位不足补0.
二进制(1 110 111 100)>>八进制(1574)
4、八进制>>二进制
从低位向高位依次换算。
八进制(2743)>>二进制(101 111 100 011)
八进制/十六进制数的书写格式
1、数的前面加0表示是八进制数
int a=010;
a的十进制为8
2、数的前面0x表示是十六进制数
int b=0XA1;
b的十进制为161
注释方式
1、用于 解释代码或屏蔽代码
2、注释风格
//C++注释风格
/*C语言注释风格*/
3、C语言注释风格不支持嵌套,建议使用C++注释风格。
/*aaaaaaa/*aaaaaaaa*/aaaaaa*/
结构化的程序设计语言
1、C语言是结构化的程序设计语言,生活中所有的事情都可以由顺序结构、选择结构、循环结构组成。
函数
1、函数之间可以调用,但不能嵌套定义。
2、函数之间通过参数传递信息。
3、A文件定义的函数,在B文件声明一下或者包含一下A文件就可以用。
全局变量和函数都有外部连接属性,在其他文件中用extern声明之后就能使用他们。
4、函数的声明如果写在调用之前,定义写在哪都可以。
函数的声明重点在于函数名和参数类型,不关注有没有参数名或者参数名取什么名。
5、形参是在函数调用的时候才会开辟内存空间。
6、main函数的返回值表示程序的退出状态。返回0则程序正常退出,返回其它数字的含义由系统决定,通常返回非0代表程序异常退出。
数组
1、存储一组相同类型的元素。
2、定义数组时,会用到操作符[],其操作数是数组名和元素个数。
3、数组的类型包括数组元素的类型和数组元素的个数
3、定义数组并初始化,可以不指定数组大小。
7、C99标准中,变长数组不能进行初始化。
8、数组不完全初始化时,未赋值的部分默认为空字符'\0'。
9、全局变量不初始化的话,它的值为0(指针则为NULL)。局部变量不初始化的话,它的值是随机值(与编译器有关)。
被static修饰的变量不初始化时默认为0,静态区的变量不初始化都为0。
10、打印数组中的所有元素,最好的方法是通过循环去打印。
11、C90标准中,数组定义时指定数组元素个数,[]内必须是常量表达式。