当前位置: 首页 > news >正文

[C初阶笔记]P2

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 2return 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标准中,数组定义时指定数组元素个数,[]内必须是常量表达式。

http://www.lryc.cn/news/134310.html

相关文章:

  • C++并发编程学习01——hello concurrent world
  • 大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件
  • Java web 中的 jsp
  • uniapp 数组操作
  • 数据结构算法--4堆排序
  • C++学习系列之DLL动态库使用
  • Java实现钉钉企业内部应用机器和自定义机器人发送消息
  • 基于QT4的GPX文件编辑器开发
  • 树结构使用实例---实现数组和树结构的转换
  • 论文阅读_条件控制_ControlNet
  • 全链路数据湖开发治理解决方案2.0重磅升级,全面增强数据入湖、调度和治理能力
  • 【算法题】2769. 找出最大的可达成数字
  • 023:vue中解决el-date-picker更改样式不生效问题
  • 爬虫借助代理会让网速快点吗?
  • 探索智能文字识别:技术、应用与发展前景
  • STL——list用法
  • Linux的基础指令
  • 深入浅出Pytorch函数——torch.nn.init.normal_
  • Vue.js知识点学习的一点笔记
  • Sui第四轮资助:16个团队瓜分
  • ATC模型转换环境问题案例
  • dart其他语法
  • C++11并发与多线程笔记(7) 单例设计模式共享数据分析、解决,call_once
  • FANUC机器人加减速倍率指令ACC的使用方法说明
  • 奥威BI数据可视化工具:360度呈现数据,告别枯燥表格
  • C# Linq源码分析之Take (三)
  • Linux journalctl命令详解(journalctl指令)(systemd服务默认日志管理工具)
  • 学习内容--
  • Stable Diffusion:使用自己的数据集微调训练LoRA模型
  • 软考高级系统架构设计师系列之:论文典型试题写作要点和写作素材总结系列文章一