C语言开发环境搭建及调试

C简介

可移植 标准C C/C++ (系统硬件操作的接口,windows,Linux不一样)

跨平台 Java Python

下载

去官网选择Visual Studio 2019下载

在这里插入图片描述

安装过程中勾选使用C++的桌面开发

安装好之后点击创建新项目——空项目

在这里插入图片描述

在这里插入图片描述

位置最好放在根目录下,解决方案名称可以是中文,填好之后点创建

在这里插入图片描述

新建代码并编译运行

选择源文件——添加——新建项

在这里插入图片描述

默认是cpp(c plus plus),就是C++。

在这里插入图片描述

名称填入以 .c 结尾,这样就是C语言了。(C++语法更严格些,初学者建议用C)

在这里插入图片描述

#include <stdio.h> //这是头文件,写C和C++都要加头文件

//入口函数   程序执行时从main函数进入
int main() {
	printf("Hello world\n");//打印输出
	//system("pause"); vs2012需要再输入这句代码,2019、2017不需要
	return 0;
}

main是主函数名,int是函数返回值类型。每个C程序必须有一个主函数main,程序从main函数开始执行。花括号{}是函数开始和结束的标志,不可省略。每个C语句均以半角分号结束。

点击本地Windows调试器开始运行程序

在这里插入图片描述

执行结果

在这里插入图片描述

使用标准库函数时应在程序开头一行书写如下内容:

#include <stdio.h>  //printf函数需要使用该头文件
#include <stdlib.h>  //system函数需要使用该头文件

程序的编译过程

程序的编译过程如图所示,首先编写源程序f.c。编写完毕后,通过编译器进行编译,这里的编译包括预处理、编译、汇编,详细过程在Linux系统编程中讲解,可以参考关于编译原理的书籍。f.c经过编译后,得到f.obj文件,f.obj文件中均是0/1类型的机器码,即CPU能够识别的微指令(英特尔的机器指令)。f.obj文件并不能执行,因为我们调用的标准库函数的代码并不在f.obj文件中。例如上面main.c中的printf函数,其代码并不在main.obj中, 这时经过链接就得到可执行文件f.exe。了解这个编译过程后,后面在编写程序遇到编译错误时,就可以分析错误,进而区分是编译错误还是链接错误。

在这里插入图片描述

我们在集成开发环境中写的代码叫做源程序f.c。经过编译之后首先生成的是目标文件f.obj。

在这里插入图片描述

”解决方案“所在文件夹:

在这里插入图片描述

一个解决方案里面可以有多个项目,这里helloworld就是其中一个项目

在这里插入图片描述

编写的代码文件就在main.c

在这里插入图片描述

在这里插入图片描述

编写的代码经过编译首先生成的文件是目标文件main.obj

在这里插入图片描述

下一步目标文件进行链接,生成可执行文件f.exe

在这里插入图片描述

为什么要进行链接?

答:因为目标文件main.obj中并没有我们刚才编写的代码的函数的源码,比如printf函数,这个库函数的实现在目标文件main.obj中并没有,而是在动态库里。

为什么要强调链接过程?

答:后面一旦出现编译错误时,会有一个错误是链接错误。后续遇见错误时要区分是编译错误还是链接错误。

程序变为exe经过了两步,一步是编译,一步链接。

断点及调试窗口设置

先把行号显示出来,工具 - 选项 - 文本编辑器 - C/C++ - 行号。

在这里插入图片描述

打断点,在左边区域点击一下即可

在这里插入图片描述

有三大调试窗口,先学把两个调出来

  1. 内存。在后面学到数组,指针可以看到成片的数据变化,很方便。
  2. 监视。可以把变量输入到该窗口里,想看哪个变量,执行下一步,某个变量变化了就可以在监视中看到。

当程序还没有运行并停到某一步时是不能调出调试窗口的,如下,没有显示

在这里插入图片描述

当程序运行起来并停到断点处时,刚才的断点会显示成箭头,此时可以调出调试窗口先调出监视窗口

在这里插入图片描述

再调出内存窗口

在这里插入图片描述

在这里插入图片描述

如何进行调试:

在这里插入图片描述

目标

学习C语言后,达到的效果是理解程序的执行过程。

程序的执行过程简单来说就是内存的变化过程,因此后面的章节都会关注内存的变化。我们通过内存来存储数据,数据存储要有规律,以便我们高效取出;把处理好的数据存放好,以便在用户需要时显示给用户。

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

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

相关文章

【vue2】近期bug收集与整理02

⭐【前言】 在使用vue2构建页面时候&#xff0c;博主遇到的问题难点以及最终的解决方案。 &#x1f973;博主&#xff1a;初映CY的前说(前端领域) &#x1f918;本文核心&#xff1a;博主遇到的问题与解决思路 目录 ⭐数据枚举文件的使用⭐elementUI中分页组件使用的注意事项⭐…

OpenAI-ChatGPT最新官方接口《从0到1生产最佳实例》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(十一)(附源码)

Production Best Practices 生产最佳实例 前言Introduction 导言Setting up your organization 设置您的组织Managing billing limits 管理计费限额API keys API密钥Staging accounts 演示账户 Building your prototype 构建您的原型Additional tips 其它技巧 Techniques for i…

C++函数重载

目录 函数重载函数重载是怎样实现的 函数重载 函数重载&#xff1a;是函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同&#xff0c;常用来处理实现功能类似数据类型不同的…

找PPT模板就上这5个网站~

分享几个可以永久免费下载PPT模板、素材的网站&#xff0c;上万个模板随便下载&#xff0c;赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYxMjky 网站素材非常全面&#xff0c;主要以设计类素材为主&#xff0c;办公类素材也很多&#x…

Spring MVC 接收 json 和返回 json (14)

目录 总入口 测试case 源码分析 1. 针对RequestBody的参数解析 2. 针对 ResponseBody 的返回值处理 总入口 通过上一篇Spring MVC 参数解析&#xff08;13&#xff09;_chen_yao_kerr的博客-CSDN博客的说明&#xff0c;相信大家对Sping MVC的参数解析有了一定的了解&…

8. 优先队列

8. 优先队列 普通的队列是一种先进先出的数据结构&#xff0c;元素在队列尾追加&#xff0c;而从队列头删除。在某些情况下&#xff0c;我们可能需要找出队列中的最大值或者最小值&#xff0c;例如使用一个队列保存计算机的任务&#xff0c;一般情况下计算机的任务都是有优先级…

【有功-无功协调优化】基于改进多目标粒子群优化算法(小生境粒子群算法)的配电网有功-无功协调优化研究(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

中断嵌套实验

使用汇编语言&#xff0c;要求&#xff1a; 外部中断1可以嵌套外部中断0 没有中断时&#xff0c;8个LED发光二极管以0.1s的速度闪烁。 有外部中断0时&#xff0c;8个LED发光二极管以0.1s的速度流水点亮。&#xff08;中断子程序0&#xff09; 有外部中断1时&#xff0c;会打断外…

gdb调试常用指令及案例讲解

文章目录 前言一、常用指令二、案例说明1、测试源文件2、编译和调试 三、其他指令四、案例说明 前言 GDB是一个由GNU开源组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调…

每天一道大厂SQL题【Day22】华泰证券真题实战(四)

每天一道大厂SQL题【Day22】华泰证券真题实战(四) 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…

2023软件测试工程师必备技能?要卷,谁还不会了......

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试岗位是怎…

day15 消息队列

目录 消息队列 消息队列的使用 发送消息 消息的接收 消息队列的控制 消息队列 概念&#xff1a; 消息队列是system V IPC对象的一种&#xff1b; 消息队列有消息队列ID来唯一标识&#xff1b; 消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等&a…

zabbix故障排查

zabbix server服务问题可以查看server日志 tail -f /var/log/zabbix/zabbix_server.log 根据日志中的error报错提示分析原因 zabbix agent服务问题可以查看agent日志 tail -f /var/log/zabbix/zabbix_agentd.log 根据日志中的error报错提示分析原因 zabbix的nginx服务问题可…

从零开始学架构-计算高性能

一、概述 高性能是每个程序员的追求&#xff0c;无论做一个系统、还是写一组代码&#xff0c;都希望能够达到高性能的效果。而高性能又是最复杂的一环&#xff0c;磁盘、操作系统、CPU、内存、缓存、网络、编程语言、数据库、架构等&#xff0c;每个都可能影响系统的高性能&…

【FPGA实验1】FPGA点灯工程师养成记

对于FPGA几个与LED相关的实验&#xff08;包括按键点灯、流水灯、呼吸灯等&#xff09;的记录&#xff0c;方便日后查看。这世界上就又多了一个FPGA点灯工程师了&#x1f60f; 成为一个FPGA点灯工程师分三步&#xff1a; 一、按键点灯1、按键点灯程序2、硬件实现 二、流水灯1、…

智慧医院微信小程序定制开发功能有哪些

无论是哪个时代&#xff0c;人们对于医疗资源的需求都没有消退过&#xff0c;尤其是随着经济条件的提高&#xff0c;人们也越来越关注健康问题。无论是生病就诊还是定期体检都要用到医疗资源。但是平时到医院好像什么时候都人满为患&#xff0c;排很长时间的队&#xff0c;不仅…

ChatGPT4 的体验 一站式 AI工具箱 -—Poe(使用教程)

最近由于人工智能聊天机器人的爆火(ChatGPT)&#xff0c;因此各种各样的AI助手流行与网络&#xff0c;各种各样的都有&#xff0c;不论是什么样的其实都是为了我们更方便的解决问题&#xff0c;今天介绍一款AI工具箱——Poe将多种AI集成与一个界面&#xff0c;大家可以一次感受…

SQL Server基础 第五章 函数的使用(日期、字符串、时间、数学、转换等函数)

前言 在SQL Server中提供了许多内置函数&#xff0c;SQL Server中的内置函数就相当于Java、C#等编程语言中的内置API函数。按照函数种类可以分为聚合函数、数学函数、字符串函数、日期函数和时间函数、转换函数和元数据的数6种。在本章中重点讲解比较常用的4种函数&#xff0c…

在线题库整理及一些刷题注意事项

在线题库整理及一些刷题注意事项 刷题站CSDN编程语言支持 LeetCode编程语言支持数据库语言支持 牛客网编程语言支持数据库语言支持 洛谷编程语言支持 AcWing编程语言支持 蓝桥编程语言支持 做题的两种模式调用模式委托模式 注意事项小结 刷题站 老顾一个人单打独斗太久了&…

如何使用ffmpeg给视频减震去抖

之前自己发过一些记录仪拍下来的画面&#xff0c;你们可能已经看过了&#xff0c;例如&#xff1a; 最适合骑行的罐装饮料 然而&#xff0c;自己这个骑行记录仪&#xff0c;仅仅是很低端的一款&#xff0c;防抖功能很差&#xff0c;远远比不了GoPro那些高端的户外运动记录仪&am…