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

[C初阶笔记]P2
Git 1、Git是Linus为了帮助管理Linux内核开发 而开发的一个开放源码的分布式版本控制软件。 2、Git和TortoiseGit的作用。 Git中有各种命令行操作,来维护代码,可以将代码推送到代码托管平台。 TortoiseGit是将Git中各自命令行操作转化为图形化操作。 …...
C++并发编程学习01——hello concurrent world
经典用例 #include <iostream> #include <thread>void hello() {std::cout << "hello concurrent world" << std::endl; }int main() {std::thread t(hello);t.join(); }编译 g -g test.cpp -o out -lpthreadgdb调试 (gdb) r Starting pr…...

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件
着业务的发展每个企业都将产生越来越多的数据,然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力,数据分析BI(商业智能)成为了现代企业不可或缺的一部分。然而,在数据分析的背后,有…...
Java web 中的 jsp
JSP是什么 JSP是动态网页编程技术 JSP的四大作用域 1.page 表示在当前页面有效 2.request 表现在一次请求中有效 3.session 表示在一次会话中有效 4.application 表示在整个应用程序中有效 jsp内置对象是什么 在jsp开发中会频繁使用到一些对象,如果每次我们在jsp页面中需要…...
uniapp 数组操作
字符串转数组 let string "12345,56789" string.split(,) // [12345,56789] 数组转字符串 let array ["123","456"] array.join(",") // "123,456" 数组元素删除 let array [123,456] // 删除起始下标为1࿰…...

数据结构算法--4堆排序
堆排序过程: >建立堆(大根堆) >得到堆顶元素,为最大元素 >去掉堆顶,将堆最后一个元素放到堆顶,此时可通过一次调整使堆重新有序 >堆顶元素为第二大元素 >重复步骤3,直到堆变空 此时是建立堆后的大根堆模型 将…...

C++学习系列之DLL动态库使用
C学习系列之DLL动态库使用 啰嗦动态库的创建动态库的调用函数生成1.需要头文件函数定义(头文件)2.需要函数定义(函数文件)3.动态库中的头文件4.动态库中的主文件5.运行查看是否存在C#的调用的入口点6.C#调用 总结 啰嗦 项目需要&…...

Java实现钉钉企业内部应用机器和自定义机器人发送消息
前言 公司让写一个服务监控的功能,当监测到服务停止时,向钉钉群里推送报警信息。之前大概看到钉钉的开放平台的API文档,好像能群发消息的只有机器人。 钉钉开放平台目前提供三种机器人: 企业内部应用机器人 群模板机器人 自定义机器人 本来向用自己比较熟悉的自定义机器人…...

基于QT4的GPX文件编辑器开发
GPX文件是记录地理点的文件,本质是一种xml文件。GPX文件目前没有很好的编辑器,因此作者决定开发一款无需安装的绿色编辑器。 在QT4开发中,XML可以用DOM来实现,但其逻辑并不是很清晰。使用模型视图反而会更加可读。因此在开发中,使用model-view模式来实现数据读写。 1 需…...

树结构使用实例---实现数组和树结构的转换
文章目录 一、为什么要用树结构?二、使用步骤 1.引入相关json2.树结构的转换总结 一、为什么要用树结构? 本文将讲述一个实例,构造一棵树来实现数组和tree的转换,这在前端树结构中是经常遇到的 后端返回树结构方便管理ÿ…...

论文阅读_条件控制_ControlNet
name_en: Adding Conditional Control to Text-to-Image Diffusion Models name_ch: 向文本到图像的扩散模型添加条件控制 paper_addr: http://arxiv.org/abs/2302.05543 date_read: 2023-08-17 date_publish: 2023-02-10 tags: [‘图形图像’,‘大模型’,‘多模态’] author: …...

全链路数据湖开发治理解决方案2.0重磅升级,全面增强数据入湖、调度和治理能力
简介: 阿里云全链路数据湖开发治理解决方案能力持续升级,发布2.0版本。解决方案包含开源大数据平台E-MapReduce(EMR) , 一站式大数据数据开发治理平台DataWorks ,数据湖构建DLF,对象存储OSS等核心产品。支持EMR新版数据…...
【算法题】2769. 找出最大的可达成数字
题目: 给你两个整数 num 和 t 。 如果整数 x 可以在执行下述操作不超过 t 次的情况下变为与 num 相等,则称其为 可达成数字 : 每次操作将 x 的值增加或减少 1 ,同时可以选择将 num 的值增加或减少 1 。 返回所有可达成数字中的…...

023:vue中解决el-date-picker更改样式不生效问题
第023个 查看专栏目录: VUE ------ element UI 本文章目录 修改后的效果示例源代码(共52行)核心内容步骤:(1)更改样式(2)添加参数 专栏目标 在vue项目开发中,我们打算保持颜色的一致…...

爬虫借助代理会让网速快点吗?
亲爱的程序员朋友们,你曾经遇到过爬虫网速慢的情况吗?别着急!今天我将和你一起探讨一下使用代理是否可以加速爬虫,让我们一起进入这个轻松又专业的知识分享。 一、原因和机制的解析 1.IP限制 某些网站为了保护资源和防止爬虫行…...

探索智能文字识别:技术、应用与发展前景
探索智能文字识别:技术、应用与发展前景 前言一张图全览大赛作品解读随心记你不对我对小结 智能文字识别体系化解读图像预处理文字定位和分割文字区域识别图像校正字体识别和匹配结果后处理小结 如何应对复杂场景下挑战复杂场景应对方法小结 人才时代对人才要求合合…...
STL——list用法
一、list介绍 1、list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2、list就是一个带头双向循环链表,list通常在任意位置进行插入、移除元素的执行效率更好。 3、list最大的缺陷是不支持任意位置的随机访问…...

Linux的基础指令
目录 1、ls指令 .和..意义 2、pwd指令 3、cd指令 ①cd ~ ②cd - 关于cd ..的用法 绝对路径和相对路径 4、touch指令 5、mkdir指令 tree指令 6、rmdir指令 7、rm指令 * 8、man指令 9、cp指令 nano: 10、mv指令 11、cat指令 12、more指令 13、less…...
深入浅出Pytorch函数——torch.nn.init.normal_
分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

Vue.js知识点学习的一点笔记
一、虚拟DOM 1、原生JS是命令式编程,当渲染在页面的数据发生一点点变化,需要整个重新渲染一编。vue.js渐进式框架有个虚拟DOM的概念,运用diff算法,比较新旧数据,相同的数据不变不重渲染,不同的部分新数据…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...