c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键

c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件


文章目录

  • c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
    • @[TOC](文章目录)
  • c/c++:windows平台下依赖的动态库
  • cpu内部结构与寄存器(了解一波)
  • 编译程序常见的错误
  • c语言代码还能反汇编??
  • 集成环境IDE,integrated development environment
  • vs常用的快捷键
  • 总结
  • 总结

c/c++:windows平台下依赖的动态库

下载一个软件:depend.exe
在这里插入图片描述
完事就可以查看hello.exe执行所依赖的第三方库了
直接打开hello.exe即可查看

在这里插入图片描述
现在我的depend.exe运行不了,卡死了
gg

反正了解一下即可

cpu内部结构与寄存器(了解一波)

我在计算机组成原理里面已经说过了
这里简单了解,拓展一下

在这里插入图片描述
寄存器在cpu内部,容量小,但是速度很快
位往往是cpu一次性处理位数的大小
在这里插入图片描述
运算的数的位数
在这里插入图片描述
内存中的数据是磁盘缓存中来
磁盘缓存从磁盘中来,硬盘

靠近cpu速度
c语言底层对内存时有封装的
我们不看寄存器
计算机发展是向着人类习惯来的,所以底层适应计算机的那些东东比较复杂,我们不咋看【汇编语言】

后来的python,c++,java,go都是底层用c封装的
反正我们后面的代码简单,但是最核心的还是c和c++

visual studio支持你写汇编语言
而且高级的工程师都会汇编语言,这样你能更好地调试代码,知道如何调试代码

#include<stdio.h>
#include<Windows.h>

int main(void)
{
	int a;
	int b;
	int c;//定义变量

	__asm
	{//高级c语言的工程师都会汇编语言的
		mov a, 3
		mov b, 4
		mov eax, a
		add eax, b//加法结果自动放入eax
		mov c, eax//将eax和放入c变量
	}

	printf("%d\n", c);
	return 0;
}

在这里插入图片描述
看来c语言中,有自动的内存使用区,需要计算时
将变量这些东西放入寄存器中

懂?

如果直接用c呢

#include<stdio.h>

int main(void) 
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c

}

在这里插入图片描述
看见了没,超级简单的代码
比汇编容易多了

美滋滋

%d是格式匹配符

`#include<stdio.h>

int main(void)
{
int a = 3;
int b = 5;
int c = a + b;
printf(“%d\n”, c);//直接打印,c底层会搞成汇编语言,但是我们不管了
//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
printf(“%d + %d = %d\n”, a, b, c);
}`在这里插入图片描述
这个c语言,当年学习的时候老费劲
其实很简单

现在用过了java,python,c++和汇编语言之后
终于明白,c原来真的挺溜的

编译程序常见的错误

你鼠标放到错误的地方,它会提示你,红色波浪线
在这里插入图片描述
在这里插入图片描述
visual studio的功能很强大的,它会提示你

反正逻辑错误不好查
其他的错误好说

实在不行,就断点调剂即可。
美滋滋
%x的代码好像也没问题
打个断点,程序会停止在这句代码,不执行
你按逐行执行,它就会执行这行代码

在这里插入图片描述
程序不是写出来的
而是调出来的

调试代码的过程远比写代码重要。

工具–选项里面找文本编辑器,c/c++,然后勾选行号,选中
然后就可以设置断点了

逐语句执行下一条指令
美滋滋

可以按调试,窗口,监视器,你看看那些变量会啥样
在这里插入图片描述
逐行运行
你看看c
在这里插入图片描述
变了,看见了么
美滋滋

要先启动调试,你才能添加窗口哦

一般f11是逐行执行,遇到函数,会进入这个函数去一步步执行
f10是执行本行,不会进去,直接执行,然后跳过本行

这种我们在其他的编程语言中依然也是这么玩的
python,java啥的,都这样

在这里插入图片描述

c语言代码还能反汇编??

调试-窗口-反汇编
美滋滋
在这里插入图片描述
就出来了反汇编的代码
c语言和汇编程序指令是一一对应的

好说,反正我们会汇编语言,你也能理解这玩意
不会汇编也无所谓

集成环境IDE,integrated development environment

在这里插入图片描述

Qt
在这里插入图片描述

visual studio
pycharm
idea

vs常用的快捷键

在这里插入图片描述
自动格式化代码
如果缩进出问题
咱们只需要一个快捷键,就搞定
ctrl+k同时还要追加ctrl+f

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	printf("%d + %d = %x\n", a, b, c);
}

排版缩进,和各种空格,都给你排版好了
非常非常nice的

整块注释
ctrl+k,追加ctrl+c

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	//printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	//printf("%d + %d = %x\n", a, b, c);
}

懂了吧

ctrl+k补加,ctrl+u取消注释

#include<stdio.h>

int main(void)
{
	int a = 3;
	int b = 5;
	int c = a + b;
	printf("%d\n", c);//直接打印,c底层会搞成汇编语言,但是我们不管了
	//%d是格式匹配符,匹配整型数据。放双引号中,c就匹配c
	printf("%d + %d = %x\n", a, b, c);
}

f9设置断点
f5调试
ctrl+f5时运行
f10逐过程不进函数
f11逐行进函数

总结

复习课堂笔记,看看自己写的博客即可
很简单的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
前面这几个博客,就是我复习的这些内容,这个课讲得很好的。


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20230412-使用STM32实现内部flash模拟U盘

最近用STM32F103CBT6搞了个U盘功能 ​ 工程师干了几年后&#xff0c;基本会有小外包的生活&#xff0c;算是赚外快吧&#xff0c;搞小钱改善伙食&#xff0c;嘻嘻。。。。 ​ 最近有个客户找到我&#xff0c;说是否通过ST的单片机搞个U盘功能&#xff0c;有些文件通过U盘拖拽…

005:Mapbox GL添加全屏显示功能

第005个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中添加全屏显示功能 。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共60行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://…

1~3年的测试工程师薪资陷入了瓶颈期,如何突破自己实现涨薪?

对于技术人员而言&#xff0c;职业规划一般分为两个方向&#xff1a;做技术、做管理。进入软件测试行业的新人都会从最基础的执行开始&#xff0c;然后是基本的功能测试。 随后大家会根据个人职业发展来进一步细化&#xff0c;有的走管理路线&#xff0c;成为主管、经理、项目…

Python 小型项目大全 76~81

七十六、井字棋 原文&#xff1a;http://inventwithpython.com/bigbookpython/project76.html 井字棋是一种在3 3网格上玩的经典纸笔游戏。玩家轮流放置 X 或 O 标记&#xff0c;试图连续获得三个。大多数井字棋都以平局告终&#xff0c;但如果你的对手不小心&#xff0c;你也…

AI 时代,提示词便是生产力

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

瑞芯微RK3568核心板强在何处?

RK3568核心板产品简介 RK3568核心板是武汉万象奥科基于瑞芯微Rockchip的RK3568设计的一款高性能核心板。该处理器集成了最新的高性能CPU、GPU&#xff0c;并拥有丰富的接口&#xff0c;非常适用于工业自动化控制、人机界面、中小型医疗分析器、电力等多种行业应用。 HD-RK3568-…

项目8:用户注册和登录的前后端联调

项目8&#xff1a;用户注册和登录的前后端联调 1.前端项目使用 2.前端项目注册模块 3.后端完成项目注册 4.前端项目登录模块 5.后端完成项目登录 6.用户认证&#xff08;校验用户是否登录&#xff09; 项目8&#xff1a;用户注册和登录的前后端联调 1.前端项目使用 直接…

【iOS】iOS语音通话回音消除(AEC)技术实现

一、前言 在语音通话、互动直播、语音转文字类应用或者游戏中&#xff0c;需要采集用户的麦克风音频数据&#xff0c;然后将音频数据发送给其它终端或者语音识别服务。如果直接使用采集的麦克风数据&#xff0c;就会存在回音问题。所谓回音就是在语音通话过程中&#xff0c;如…

九龙证券|这一刻,资本市场进入全新时代!

2023年4月10日&#xff0c;第一批10家主板注册制企业上市鸣锣敲钟&#xff0c;奏响了触及本钱商场灵魂深处革新的序曲。 动能切换中的我国对于高效资源配置的渴望&#xff0c;与革新进行时的本钱商场对于全面注册制的探究&#xff0c;一起凝集成一股连绵有力之暖流&#xff0c;…

2023年最强手机远程控制横测:ToDesk、向日葵、Airdroid三款APP免Root版本

前言 随着远程办公和远程协作的日益普及&#xff0c;跨设备、系统互通的远程控制软件已经成为职场人士不可或缺的工具之一。在国内&#xff0c;向日葵和ToDesk是最著名的远程控制软件&#xff1b;而在国外&#xff0c;则有微软远程桌面、AirDroid、TeamViewer、AnyDesk、Parse…

【华为机试真题详解JAVA实现】—Sudoku

目录 一、题目描述 二、解题代码 一、题目描述 问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个3X3粗线宫内的数字均含1-9,并且不重复。 例如: 输入 输出

Faster-RCNN代码解读2:快速上手使用

Faster-RCNN代码解读2&#xff1a;快速上手使用 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现&#xff0c;不要多想&#xff0c;我还没有厉害到可以一个人复现所有代码。所以&#xff0c;是参考别人的代码&#xff0c;进行自己的解读。 ​ 代码来自于B站的UP主&#xff08;…

汽车电子相关术语介绍

一、相关术语介绍 1、汽车OTA 全称“Over-The-Air technology ”&#xff0c;即空中下载技术&#xff0c;通过移动通信的接口实现对软件进行远程管理&#xff0c;传统的做法到4S店通过整车OBD对相应的ECU进行软件升级。OTA技术最早2000年出现在日本&#xff0c;目前通过OTA方式…

FusionCharts Suite XT v3.20.0 Crack

FusionCharts Suite XT v3.20.0 改进了仪表的径向条形图和调整大小功能。2023 年 4 月 11 日 - 9:37新版本特征 添加了一个新方法“_changeXAxisCoordinates”&#xff0c;它允许用户将 x 轴更改为在图例或数据交互时自动居中对齐。更新了 Angular 集成以支持 Angular 版本 14 …

【微信小程序-原生开发】添加自定义图标(以使用阿里图标库为例)

方式一 &#xff1a; 下载svg导入 优点&#xff1a;操作方便&#xff0c;支持多彩图标缺点&#xff1a;会增加源代码大小 下载 svg 格式的图标图片&#xff0c;放入源码中使用 小程序项目中的路径为 assets\icon\美食.svg 使用时-代码范例 <image class"imgIcon"…

前端开发工具-Visual Studio Code-插件下载-迁移到新电脑

背景 前端使用的开发工具一般是Visual Studio Code&#xff0c;很多辅助功能&#xff0c;比如字体高亮、单词拼写检查、预览图片等需要安装插件。但是插件在原来的电脑&#xff0c;不想下载或者自己是新人&#xff0c;想迁移同事的插件&#xff0c;或者新电脑没有外网。 以下…

图解HTTP阅读笔记:第4章 返回结果的HTTP状态码

《图解HTTP》第四章读书笔记 图解HTTP第4章&#xff1a;返回结果的HTTP状态码4.1 状态码告知从服务器端返回的请求结果4.2 2XX成功4.2.1 200 OK4.2.2 204 No Content4.2.3 206 Parital Content4.3 3XX重定向4.3.1 301 Moved Permanently4.3.2 302 Found4.3.3 303 See Other4.3.…

OK-3399-C ADB烧录

ADB烧写 一、OK3399用户资料工具目录附带了ADB工具的资料包路径&#xff1a; 二、将其解压在C:\User目录 三、将设备通过type-c线download口与电脑相连接&#xff0c;打开命令行&#xff0c;进入解压的目录&#xff0c;查看adb是否安装成功&#xff1a; 四、安装成功后&#x…

spring-boot怎么扫描不在启动类所在包路径下的bean

前言&#xff1a; 项目中有多个模块&#xff0c;其中有些模块的包路径不在启动类的子路径下&#xff0c;此时我们怎么处理才能加载到这些类&#xff1b; 1 使用SpringBootApplication 中的scanBasePackages 属性; SpringBootApplication(scanBasePackages {"com.xxx.xx…

在proteus中仿真arduino实现矩阵键盘程序

矩阵键盘是可以解决我们端口缺乏的问题&#xff0c;当然&#xff0c;如果我们使用芯片来实现矩阵键盘的输入端口缺乏的问题将更加划算了&#xff0c;本文暂时不使用芯片来解决问题&#xff0c;而使用纯朴的8根线来实现矩阵键盘&#xff0c;目的是使初学者掌握原理。想了解使用芯…