C++学习
C++在完成了对C语言的学习后,我打算再更深一步学习C语言的升级版本,C++,本篇文章我将作为学习C++的一篇总结笔记,相较C语言的学习,我将不会把一些系统底层的知识写在里面,仅仅是针对C++的一篇笔记
一.对C++的初步探索hello world在C++中的写法:
C++相比C语言,C++程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互(面向对象的编程语言)
甚至在C++中,可以在一行放多个代码,如:
![屏幕截图 2024-11-07 215743](https://raw.githubusercontent.com/SUDG01/tuchuang/main/屏幕截图 2024-11-07 215743.png)
三字符组总是以两个问号开头,可以用于替换某些字符,以下为常用的字符序列
对所大部分编程语言通用,但还是提一嘴,除了用于分隔代码的空格,多的C++(包括其他语言)编译器都忽略不计
多线程的使用
多线程一.线程(Thread)定义:一个线程就是一个”执行流”,每个线程之间都可以按照顺序执行字节的代码,可以”同时”执行着多份代码,其中,main()一般被称为主线程(Main Thread)
多进程同样可以实现同时执行任务,但是
线程比进程更加轻量
而且,人们为了更进一步,又诞生出了,”线程池”和”协程”
进程和线程的区别?
进程是包含线程的,每个进程至少有一个线程存在,即主线程
进程和进程之间不共享内存空间,同一个进程之间共享同一个内存空间
进程是系统分配资源的最小单位,线程是系统调度的最小单位
一个进程挂了一般不会影响到其他进程,但是可能会把进程内的线程一起带走
二.C语言中的线程操作创建线程,利用posix库,可以创建线程
#include <pthread.h>
pthread_create(thread,attr,start_routine,arg);
参数解释:
thread 指向线程表示符指针
attr 一个不透明的属性对象,可以被用来设置线程属性。可以指定对象,默认值为NULL
start_routine 线程运行函数的起始地址,一旦线程被创建 ...
汇编学习
汇编语言学习以8086CPU为例来进行学习
汇编语言的基础知识汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
每一种CPU都有自己的汇编指令集
汇编指令有一下三类指令组成
(1)汇编指令:机器码的助记符,有对应的机器码
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行
(3)其他符号:如+,-,*,/等,由编译器识别,没有对应机器码
CPU在内存中读数据,需要和存储器进行3类信息的交互(CPU可以直接使用的信息在存储器中存放)
存储单元的地址(地址信息)
器件的选择,读或写的命令(控制信息)
读或写的数据(数据信息)
tip:在存储器中指令和数据没有任何区别,都是二进制信息
每一个CPU都有许多管脚,这些管脚和总线相连,所以说CPU可以引出3中总线的宽度标志了这个CPU的不同方面的性能:
地址总线的宽度决定了CPU的寻址能力
数据总线的宽度决定了CPU与其他器件进行数据传送时的依次数据传送量
控制总线的宽度决定了CPU对系统中其他器件的控制能力
存储器:从读写属性上看分为两类:RAM(随机 ...
考核题目复现
第一道题目, 使用指针创建一个二维整型数组,并通过用户输入初始化数组的元素。然后计算并输出所有元素的和
要求输入示例
刚开始尝试实现的结果是这样的
很疑惑,为什么结果会多出来10,换了几个数字和数组大小,结果总是和预期不同
猜测可能是访问越界,导致访问数组的值不正确
通过搜索得知,二维数组涉及到一个动态分配的问题
int** arr = (int**)malloc(sizeof(int*)* hang); //申请一个二级指针,用来记录有多少个指向整型的指针。行数
for (int i = 0;i < hang;i++){
arr[i] = (int*)malloc(sizeof(int)* lie); //循环,为每行分配列数的内存
}
其中,int**是指向整个一维数组的指针,即整个二维数组,int*则是指向一维数组
将动态分配加上后,果然,数值计算就正确了
而第二道题目
编写一个C程序,使用指针创建一个一维数组,并通过用户输入初始化数组的元素,然后通过计算每个元素(大写,小写,空格,数字)出现的次数
要 ...
C语言学习
学习C语言一.PE格式1.PE文件在win下:.exe .dll .sys
在linux下: elf
此类文件都属于PE结构的文件类型。
2.PE文件的构成由DOS部首,PE文件头,块表(section table),块(section)以及调试信息组成
DOS部首最开始的部分是DOS部首,由DOS的MZ文件标志和DOS stub组成
(MZ)开头: e_magic ,为固定的值 “0x5a4d”
DOS Stub即为一句话”This program Cannot be run in DOS mode”
PE文件头最开始的部分是以’PE\0\0’:”0x50 0x45 00 00”开始的,由DOS部首中,结构成员e_lfanew(0x3c)指向
在PE文件头中,IMAGE_OPTIONAL_HEADER32和IMAGE_FILE_HEADER都定义了很多PE的数据
特别在IMAGE_OPTIONAL_HEADER32中,包含了数据结构表
数据结构表有导出表和导入表
导入表为引用的函数,导出表则为程序本身定义的函数
块表块表指向块
块
RVA(相对虚拟地址)= VA(虚拟地 ...
第一周学习笔记
实验室第一周学习内容:
1.搭建个人博客采用了hexo框架,windows安装git后使用git依次输入
npm install -g hexo-cli #全局安装hexo
hexo init #初始化博客
npm install #安装hexo依赖包
选定文件夹后git clone拉取hexo仓库后本地输入
hexo s
本地博客就在localhost上运行了,浏览器输入http://localhost:4000即可访问
本地博客搭建完毕后,需要在公网上可以访问展示,使用github仓库为媒介,搭建博客
第一步是设置ssh密钥,在git上生成rsa密钥,输入
ssh-keygen -t rsa -C "xxxx@qq.com" #生成密钥,xxx填邮箱地址
复制密钥后在github上创建两个ssh密钥连接
一个是sighin一个是auth
验证可以和github仓库连接后,输入
hexo g #生成html网页
hexo ...
欢迎来到SU小喵の小站
Hallo,大家好!!
这里是SUX1NG,是一只小狐喵
随着时间的推移,小喵也是来到了大学,见识到了许多新的事物,也向着更发高难度的学业开始了自己的旅程 为此,小喵建设了一个属于自己的blog,以此来记录小喵在大学四年的学习生活,并希望能够记录到许多美好的事物= v =
emmmmmmmmmm
最后
欢迎你来访问我的小网站!!!!!
xwx