第一个C代码讲解

news2025/1/23 14:53:47

文章目录

  • 编写C文件
    • 创建文本文件
    • 编写代码
    • 修改文件后缀
    • 切换文件路径
  • 编译代码
    • 打开命令行
    • 使用gcc编译代码
    • 运行程序
      • 双击运行
      • 使用命令行运行
  • 代码分析
  • 编译过程

编写C文件

  编辑C代码文件的工具有很多,为了让大家初学的时候摆脱编译软件的干扰,更容易理解编译过程。本次我们使用记事本编辑,gcc编译第一个C代码文件。
  书上本章内容太过跳跃,我在此新加一个过渡章节,用于解析一个最简单的代码框架。

创建文本文件

  首先,创建一个文本文件,取个英文名字,我这里取名为==“main”==。
在这里插入图片描述
在这里插入图片描述

编写代码

  然后,双击打开文件,将以下内容敲进去(拷贝),然后保存文件

#include<stdio.h>
int main()
{
	printf("Hello World\n");
	getchar();
	return 0;
}

在这里插入图片描述

修改文件后缀

  右键选中文件,重命名文件,修改文件后缀txtc,弹出以下窗口,选择==“是”==。如果看不到后缀名,可询问度娘,不同系统修改方法略有差异,不过没有难度,按照步骤修改即可。
在这里插入图片描述

切换文件路径

  为了方便,首先将创建的main.c文件拷贝到一个干净的文件夹,这里我将main.c放在了一个新的文件夹E盘下的NEW文件夹。
在这里插入图片描述

编译代码

  为了演示编译的过程,本次编译代码使用的是MINGW中的gcc,如果没有安装的可以在网上找到教程,大家也可以使用VS Code安装教程中MinGW的安装过程来安装。
  只需要一下几步就可以。

  • 下载
  • 解压
  • 放到文件夹下
  • 在环境变量的path中,添加解压后的bin文件路径全称。
    在这里插入图片描述


在这里插入图片描述

打开命令行

  命令行打开的方法我推荐这一个,比较简单:
  打开上方的导航栏输入框,输入==“cmd”==,然后双击键盘的“Enter”键。
在这里插入图片描述
  双击键盘的“Enter”键后会打开一个命令行的黑窗口,此时窗口是当前文件夹的路径,我的是E盘的NEW文件夹。
在这里插入图片描述

使用gcc编译代码

  在黑窗口输入==“gcc main.c”==,然后点击回车(Enter)键。查看文件夹下多了一个文件,名称是“a.out”,这个文件图标是一个默认的应用图标。
在这里插入图片描述
在这里插入图片描述

运行程序

双击运行

  双击运行一下,会弹出一个黑窗口,显示了“Hello World”,然后在这个黑窗口按下键盘上的任意按键,窗口会显示运行结束信息,有的系统可能会一闪而过。
在这里插入图片描述

使用命令行运行

  在命令行输入程序名称a.exe,然后按下键盘的回车“Enter”,键盘,窗口也会显示出来字符。
在这里插入图片描述
  此时按下任意按键,程序退出。我输入的是字符A
在这里插入图片描述

代码分析

  现在已经运行了一个程序,有没有发现黑窗口显示的那句话是在main.c文件中写的内容呢,下面我们来介绍一个这几行代码;

#include<stdio.h>

  第一行的作用是导入一个名字叫“stdio.h”的文件,导入这个文件的原因是我们要用这个文件里的东西(函数)。其实这个导入也是很简单的操作,就是将“stdio.h”中的文件内容复制到我们的main.c里面来了。

int main()

  第二行是程序执行的入口。简单来说就是要执行函数,要一句一句的执行,执行的时候第一行代码是从main()执行的。执行完以后会返回一个int类型的元素,有关详细的内容会在函数章节讲。这里只需要记住main函数是C程序的入口。()也有讲究,如果你看过别人的代码会发现这里面有一些内容,这里我们先不介绍,也留到函数部分讲解。

{

}

  括号部分就是将代码括起来,告诉计算机,{}里面的内容是属于main函数的。

printf("Hello World\n");

  这一行的作用就是吧Hello World显示出来,printf就是我们第一行导入的stdio.h文件里的。\n是一个特殊字符,在这里的作用就是换行,;标志着这一句代码的结尾。

getchar();

  这一行也是我们第一行导入的stdio.h文件里的,在这里的作用是从键盘获取一个字符,如果不按按键就会一直在这个界面,这就是为什么要你们输入一个字符的意义。有的系统不加这一句,黑窗口就一闪而过了。;标志这一句的结尾

return 0

  这一行的作用是告诉计算机,main函数结束了,返回了一个数字0。;标志这一句的结尾。

编译过程

  上面的内容如果有点吃力是正常的,刚刚接触很多思维还没有发散,后面我们会将这里的每一个作用都详细的阐述,随着后面的学习会更理解这些内容的。
上面我们只一步gcc main.c就生成了可执行文件。其实计算机执行的时候执行了4个步骤,分别是:

  • 预处理
  • 编译
  • 汇编
  • 链接
    这四步的具体每一步做了什么将在下一篇文章讲解。看完之后试着把本节的代码自己编写运行一遍,也可以试着修改输出的内容,自己尝试运行看看,修改完文件以后一定要先用gcc编译重新生成文件,否则运行的文件还是旧的文件哦。
    尝试运行以下代码,看看有什么变化
#include<stdio.h>
int main()
{
	printf("Hello World\n");
	getchar();
	printf("Hello World\n");
	return 0;
}
#include<stdio.h>
int main()
{
	printf("Hello World");
	getchar();
	printf("Hello World\n");
	return 0;
}

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

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

相关文章

数据结构 -- 并查集与图

目录 1.并查集 1.结构 2.原理 3.代码实现 1.存储 2.寻找根节点 3.是否为同一集合 4.求集合个数 5.合并为同一集合中 整体代码 2.图 1.基本知识 1.各个属性 2.特殊名词 3.图的解释 2.图的表示 1.邻接矩阵 2.邻接表 3.图的遍历 1.BFS--广度优先遍历 2.DFS--…

Python with提前退出:坑与解决方案

Python with提前退出&#xff1a;坑与解决方案 问题的起源 早些时候使用with实现了一版全局进程锁&#xff0c;希望实现以下效果&#xff1a; Python with提前退出&#xff1a;坑与解决方案 全局进程锁本身不用多说&#xff0c;大部分都依靠外部的缓存来实现的&#xff0c;r…

python读取excel自动化生成sql建表语句和java实体类字段

1、首先准备一个excel文件&#xff1a; idtypenameidint学号namestring姓名ageint年龄sexstring性别weightdecimal(20,4)体重scoredecimal(20,4)分数 2、直接生成java字段和注释&#xff1a; import pandas as pddf pd.read_excel(test.xlsx, sheet_nameSheet1)for i in ran…

k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意&#xff1a;如上例的话&#xff0c;执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob&#xff08;简写为cj&#xff09; 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…

【MySQL】常用内置函数:数值函数 / 字符串函数 / 日期函数 / 其他函数

文章目录 数值函数round()&#xff1a;四舍五入ceiling()&#xff1a;上限函数floor()&#xff1a;地板函数abs()&#xff1a;计算绝对值rand()&#xff1a;生成0-1的随机浮点数 字符串函数length()&#xff1a;获取字符串中的字符数upper() / lower()&#xff1a;将字符串转化…

使用Ray创建高效的深度学习数据管道

大家好&#xff0c;用于训练深度学习模型的GPU功能强大但价格昂贵。为了有效利用GPU&#xff0c;开发者需要一个高效的数据管道&#xff0c;以便在GPU准备好计算下一个训练步骤时尽快将数据传输到GPU&#xff0c;使用Ray可以大大提高数据管道的效率。 1.训练数据管道的结构 首…

优化邮件群发效果的方法与策略

怎样优化邮件群发效果&#xff1f;这是许多企业在进行邮件营销时常常被问到的问题。邮件营销是一种高效且经济实惠的市场推广方式&#xff0c;但如何使邮件真正引起接收者的兴趣并产生预期的效果并不容易。好的营销效果可以带来高回报、高收益率&#xff0c;但是怎么提升群发效…

工会排队奖励模式:创新营销策略,实现共赢局面

在当今的商业环境中&#xff0c;创新营销策略的重要性日益凸显。工会排队奖励模式作为一种新型的营销策略&#xff0c;旨在通过结合线上和线下消费&#xff0c;激励消费者购买产品或服务&#xff0c;并获得返现奖励。这种模式通过将消费者的支出和商家的抽成资金纳入奖金池&…

CSS3样式详解之圆角、阴影及变形

目录 前言一、圆角样式&#xff08;border-radius&#xff09;二、元素阴影&#xff08;box-shadow&#xff09;三、过渡动画样式&#xff08;transition&#xff09;1. transition-property(用于设置属性名称)2. transition-duration&#xff08;设置时间&#xff09;3. trans…

7、信息收集(2)

文章目录 一、指纹识别1、Nmap工具2、Wafw00f工具 二、使用Maltego进行情报收集 一、指纹识别 1、Nmap工具 命令一&#xff1a;nmap -sS -sV <ip>&#xff0c;使用TCP SYN的方式&#xff0c;扫描目标主机上常规端口运行的服务版本。 -sS&#xff1a;指定使用TCP SYN的方…

注解(概念、分类、自定义注解)

注解基本概念 注解(元数据)为我们在代码中添加信息提供一种形式化的方法&#xff0c;我们可以在某个时刻非常方便的使用这些数据。将的通俗一点&#xff0c;就是为这个方法增加的说明或功能。 作用&#xff1a; 编写文档&#xff1a;通过代码里标识的注解生成文档【生成doc文…

常使用的定时任务

常使用的定时任务 一、 linux自带的定时任务 1、crontab 有这样一个需求&#xff1a;我们使用Java写一个工具jar包在系统空闲的时候去采集已经部署在Linux系统上的项目的一 些数据&#xff0c;可以使用 linux 系统的 crontab。 运行crontab -e&#xff0c;可以编辑定时器&…

git stash save untracked not staged

git stash save untracked not staged 如图 解决方案&#xff1a; git stash save "tag标记信息" --include-untracked或者&#xff1a; git stash save -u "tag标记信息" git stash clear清空本地暂存代码_zhangphil的博客-CSDN博客文章浏览阅读486次。…

合阔智云:实现API无代码开发,连接ERP系统和CRM系统提高运营效率

概述 合阔智云&#xff0c;一家成立于2011年的科技公司&#xff0c;核心业务是提供云原生和移动化设计的新一代全渠道“云端一体”履约中台和去中心化模式智能门店供应链业务中台。他们的系统可以无需API开发即可实现电商系统和客服系统的连接和集成&#xff0c;大大提高了企业…

通过python脚本上传本地/远程服务器文件到minio

前言 将文件上传到MinIO对象存储后&#xff0c;MinIO会将文件存储为对象(.meta文件)&#xff0c;并为每个对象生成相应的元数据。元数据是描述对象的属性和信息的数据。 通常&#xff0c;元数据包括对象的名称、大小、创建日期等。 在MinIO中&#xff0c;对象的元数据存储在独立…

振南技术干货集:各大平台串口调试软件大赏(1)

注解目录 &#xff08;串口的重要性不言而喻。为什么很多平台把串口称为 tty&#xff0c;比如 Linux、MacOS 等等&#xff0c;振南告诉你。&#xff09; 1、各平台上的串口调试软件 1.1Windows 1.1.1 STCISP &#xff08;感谢 STC 姚老板设计出 STCISP 这个软件。&#xf…

FPGA程序执行相关知识点

1.目前&#xff0c;大多数FPGA芯片是基于 SRAM 的结构的&#xff0c; 而 SRAM 单元中的数据掉电就会丢失&#xff0c;因此系统上电后&#xff0c;必须要由配置电路将正确的配置数据加载到 SRAM 中&#xff0c;此后 FPGA 才能够正常的运行。 常见的配置芯片有EPCS 芯片 &#x…

基于傅里叶变换的运动模糊图像恢复算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、傅里叶变换与图像恢复 4.2、基于傅里叶变换的运动模糊图像恢复算法原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %获取角度 img…

[密码学]DES

先声明两个基本概念 代换&#xff08;substitution&#xff09;,用别的元素代替当前元素。des的s-box遵循这一设计。 abc-->def 置换&#xff08;permutation&#xff09;&#xff0c;只改变元素的排列顺序。des的p-box遵循这一设计。 abc-->bac DES最核心的算法就是…

从零搭建AlibabaCloud微服务项目

1&#xff0c;创建maven项目工程如下 equipment-admin 后台equipment-applet 前台或小程序端或app、h5equipment-common 公共模块equipment-gateway 网关equipment-mapper mapper层操作数据库equipment-model 实体类对应数据库表 2&#xff0c;在父pom文件引入依赖 <proper…