[C初阶笔记]P2

news2024/10/5 16:28:00

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch复合查询之Boosting Query

前言 ES 里面有 5 种复合查询&#xff0c;分别是&#xff1a; Boolean QueryBoosting QueryConstant Score QueryDisjunction Max QueryFunction Score Query Boolean Query在之前已经介绍过了&#xff0c;今天来看一下 Boosting Query 用法&#xff0c;其实也非常简单&…

Redis数据结构——快速列表quicklist、快表

定义 Redis中的数据结构&#xff0c;链表和压缩列表这两种数据结构是列表对象的底层实现方式。 当时考虑到链表的附加空间太大&#xff0c;节点的内存都是单独分配的&#xff0c;还会导致内存碎片化问题严重。 因此从Redis3.2开始&#xff0c;对列表的底层数据结构进行了改造&…

Web和云开发,Rust会起飞?

Web和云开发&#xff0c;Rust会起飞&#xff1f; 一、前言 二、大厂偏爱&#xff0c;Rust的未来 三、Rust做Web的雄心 四、有必要换Rust做Web&#xff1f; 1.效率和性能 2.可靠性和可维护性 五、Rust先苦后甜 六、用Rust前的几个问题 七、开发界的强者 一、前言 去年…

图卷积网络:GNN 深入探讨【02/4】

一、说明 在各种类型的GNN中&#xff0c;图卷积网络&#xff08;GCN&#xff09;已成为最普遍和应用最广泛的模型。GCN具有创新性&#xff0c;因为它们能够利用节点的特征及其局部性进行预测&#xff0c;从而提供了一种处理图形结构数据的有效方法。在本文中&#xff0c;我们将…

SkyEye操作指南:连接TI CCS的IDE调试

现代电力电子控制系统的开发中&#xff0c;DSP芯片以其优越的运算性能在控制算法领域得到越来越广泛的应用。传统的DSP开发过程往往需要在完成控制系统仿真与程序设计后&#xff0c;才能根据比对结果进行程序修改&#xff0c;全过程还需要硬件电路工程师的配合&#xff0c;开发…

线性代数再回顾

最近&#xff0c;在深度学习线性代数&#xff0c;之前大一的时候学过线性代数&#xff0c;但那纯属于是应试用的&#xff0c;考试一考完&#xff0c;啥都忘了&#xff0c;也说出不出个所以然&#xff0c;所以&#xff0c;在B站的MIT的线性代数以及3blue1brown线性代数的本质中去…

深入学习前端开发,掌握HTML、CSS、JavaScript等技术

课程链接&#xff1a; 链接: https://pan.baidu.com/s/1WECwJ4T8UQfs2FyjUMbxig?pwdi654 提取码: i654 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 课程介绍&#xff1a; 第1周&#xff1a;HTML5基础语法与标签 &#x1f…

Nginx转发请求到后端服务报400 Bad Request

问题描述 系统部署好后&#xff0c;进行测试时发现有部分接口出错&#xff0c;项目采用Nginx作为后端代理服务器&#xff0c;有Nginx统一将请求转发到后端的网关服务&#xff0c;再由网关服务路由到具体的服务上&#xff0c;发布好后&#xff0c;大部分接口都是正常的&#xff…

使用Python将文本转换成语音?

使用Python将文本转换成语音&#xff1f; 超酷的Python应用&#xff1a;将文本转换成语音&#xff01;这不仅是一个有趣的项目&#xff0c;还能让你体验到Python的神奇之处。废话不多说&#xff0c;让我们开始动手吧&#xff01; 为什么要转换文本成语音&#xff1f; 在这个信…

Redis缓存!

一些基础芝士 将MySQL的热点数据存储在Redis中&#xff0c;通常业务都满足二八原则&#xff0c;80%的流量在20%的热点数据之上&#xff0c;所以缓存是可以很大程度提升系统的吞吐量。 一般而言&#xff0c; 缓存分为服务器端缓存&#xff0c;和客户端缓存 服务器端缓存即服务…

git权限问题解决方法Access denied fatal: Authentication failed

文章目录 遇到Access denied 的权限问题解决方法1、git的密码修改过&#xff0c;但是本地没更新。2、确定问题&#xff0c;然后增加配置① 查询用户信息②如果名称和email不对&#xff0c;设置名称&#xff1a;③ 检查ssh-add是否链接正常④ 设置不要每次都输入用户名密码 3、配…

算法通关村第3关【青铜】| 不简单的数组增删改查

1. 创建数组 //第一种创建和初始化的方法int[] arr new int[10];//第二种创建和初始化的方法int[] arr2 new int[]{0, 1, 2, 3, 5, 6, 8};System.out.println("arr2:" Arrays.toString(arr2));//第二种方式的简化版本:int[] arr3 {2, 5, 0, 4, 6, -10};System.ou…

leetcode292. Nim 游戏(博弈论 - java)

Nim 游戏 Nim 游戏题目描述博弈论 上期经典算法 Nim 游戏 难度 - 简单 原题链接 - Nim游戏 题目描述 你和你的朋友&#xff0c;两个人一起玩 Nim 游戏&#xff1a; 桌子上有一堆石头。 你们轮流进行自己的回合&#xff0c; 你作为先手 。 每一回合&#xff0c;轮到的人拿掉 1 -…

蓝牙资讯|中国智能家居前景广阔,蓝牙Mesh照明持续火爆

据俄罗斯卫星通讯社报道&#xff0c;中国已成为全球最大的智能家居消费国&#xff0c;占全球50%—60%的市场份额。未来&#xff0c;随着人工智能技术的发展以及智能家居生态的不断进步&#xff0c;智能家居在中国的渗透率将加速提升。德国斯塔蒂斯塔调查公司数据显示&#xff0…

已知四个坐标点,怎样求出四边形的四个内角

1&#xff0c;理论 最简单的方式利用向量进行求解 如图可得&#xff1a; cosθa*b/&#xff08;|a|*|b|&#xff09; 已知三点坐标&#xff0c;很容易可以得到两向量之积a*b&#xff0c;以及每个的模值 2&#xff0c;四个角度求解过程 首先&#xff0c;我们定义了四个坐标点…

Kubernetes+EFK构建日志分析平台

目录 Fluentd 工作原理 1.1、主机初始化配置 1.2、部署docker环境 二、部署kubernetes集群 2.1、组件介绍 2.2、配置阿里云yum源 2.3、安装kubelet kubeadm kubectl 2.4、配置init-config.yaml 2.5、安装master节点 2.6、安装node节点 2.7、安装flannel 3、部署企业…

5G之CSI报告的内容

[TOC]5G之CSI报告的内容 一、CSI包括的内容 1. UE上报的信道状态信息&#xff08;Channel State Information&#xff0c;CSI&#xff09;包括 信道质量指示&#xff08;Channel Quality Indicator, CQI)&#xff1b;预编码矩阵指示&#xff08;Precoding Matrix Indicator&…

QT:定时器事件

定时器第一种办法&#xff1a; 1.利用事件timerEvent&#xff0c;在帮助文档中找到该字段&#xff1a;[override virtual protected] void QTimer::timerEvent(QTimerEvent *e) 重写该虚函数 //重写定时器事件void timerEvent(QTimerEvent *e);2.启动定时器startTimer(1000); …

C++线程库

C线程库是C11新增的重要的技术之一&#xff0c;接下来来简单学习一下吧&#xff01; thread类常用接口 函数名功能thread()构造一个线程对象&#xff0c;没有关联任何线程函数&#xff0c;即没有启动任何线程。thread(fn, args1, args2, ...)构造一个线程对象&#xff0c;并…

Python进阶系列(一)——异常处理

异常处理 在程序中&#xff0c;如果出现异常&#xff0c;我们需要捕捉异常&#xff0c;终止程序&#xff08;可能的话&#xff09;&#xff0c;并且提示错误信息。 写好异常处理&#xff0c;对于debug有很大的好处&#xff0c;可以帮助我们捕捉到错误所在的位置&#xff0c;以…