【C语言编程入门系列】—— 第三章,编写第一个C语言程序!

2023-05-16

  导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上计算机,机你太美),就是往屏幕输出“hello world”,本章也不例外。

3.1 Hello,World!

  这一节和读者一起来编写第一段C语言程序,过程详细到令人发指。

3.1.1 创建C语言源码文件

  打开 Dev C++,在上方菜单栏中选择“文件 --> 新建 --> 源代码”,如图3.1

图3.1  创建源代码文件

 

3.1.2输入一段代码

  用键盘输入以下代码,先输入,等会再分析:

#include void main() 

    printf("hello,world"); 

图3.2  输入第一段代码

 

3.1.3 文件保存

  保存到自定义的目录下,给这个C语言程序的取名为hello world.c,后缀为“c”,说明此文件就为C语言程序文件。

图3.3  保存为后缀为c的文件

 

3.1.4编译运行

  点击“运行 --> 编译运行”,为什么要编译运行呢,根据不同操作系统,比如windows的可执行文件后缀为"exe",所以编译c语言文件为可执行的exe文件,这样才能在windows下执行。

图3.4  编译运行代码

 

3.1.5查看运行结果

图3.5   执行结果

   可以发现,在保存hello world.c的文件夹下面,多了一个hello world.exe,这个就是编译链接后生产的可执行文件,一般电脑要关闭杀毒软件就能执行它了。

  下一节会简明的说一下这段程序的意思。

 

3.2初识C语言代码

  本节主要讲解上一节写的五行C语言程序。

#include void main() 

    printf("hello,world"); 

  下面就针对代码的每一行进行讲解。

 

3.2.1 #,<>,(),{},"",;这些符号有什么用?

    首先我们得清楚一个概念,编译器神通广大!

  看到这么多符号,比如:#,<>,()......等等,先别紧张,它们都是给编译器标识语句用的,这一小节先暂时不去考虑它们的意思,只要记住,编译器有它识别的规范,这些都是规定好的,照做既可。

注意:咱们中国人一般吧"#"念做井号,外国人应该把它念做Sharp,不管它怎么念,C语言要会写会用即可,程序员一般话不多说,直接用代码说事。

 

3.2.2 #include <stdio.h>

  C语言代码需要用到C库里面的功能的话,就需要申明头文件,声明头文件的格式需要用到符号“#”,以及关键字include,然后把需要用到的头文件放入<>符号中,比如本节用的<stdio.h>,就把头文件stdio.h放入<>之中。

  新手肯定要开始困惑了,啥是C库?啥是“声明”?头文件又是什么东东?为啥要用到"#"?那就由我来逐一解释吧。

注意:如果解释的不够详细,请在下发评论,我会根据建议重新修改这方面的解释的。

 

C库与头文件:C语言为了减轻程序员的工作量,提供了C库。C库里面有好多好多功能,好多好多文件。为了编译速度快些,所以当程序员需要使用C库的某些功能的时候,就需要添加相关头文件来表明,不需要就不添加。比如我们用到的stdio.h这个头文件吧,这个就是标准的C库输入输出头文件,相关功能下一小节详细介绍。

注意:读者暂时可以这么理解,输入就是接受键盘的输入,输出就是屏幕上输出显示。

 

声明与#include:上述说过,当程序员需要使用C库的某些功能的时候,就需要添加相关头文件来表明,这个过程就是声明,声明头文件用到标识符#,然后再用到关键字include,这些都是C语言代码格式的规定,照着做就是了,以后代码写多了也就渐渐明白了。

提示:可以知道include的直译意思就是包含,包括。

 

3.2.3 printf("hello world");

  上一小节说到stdio.h这个头文件,是标准C库的输入输出头文件。我们已经声明了这个头文件,所以就可以使用头文件里所有的功能,其中一个就是printf功能。

注意:声明头文件办法之前说过,这么做:#include <stdio.h>

 

  先直译一下printf,print的意思就是打印,f的意思我认为是flow的缩写,就是流,所以printf的意思就是打印流或者叫输出流,最终输出流输出到显示屏上显示出来。

注意:流好比高山流水的水流,计算机编程里面用流来表示要流过CPU的数据流,这里的输出流就是要输出到显示屏的数据流。

图3.6  数据流

  本节我们输出到显示屏上的文字是hello world,现在需要读者打开Dev-C++,打开helloworld.c,把鼠标移动到printf中,按下键盘“Ctrl”,会发现鼠标显示变成了手的形状,点击鼠标可以看到如下代码:

int__cdecl printf(constchar* __restrict__ _Format,...);

  看着似乎有点复杂呢,不急,本小节只需要知道printf的使用方法之一,输出文本流即可,用法就是在printf后的括号里面,添加双引号“”,再把需要输出的文本流放入双引号里面就行了,最后括号外面添加分号;即可:

printf("hello world");

  读者可以自行修改需要输出到显示屏的文本流,看看效果体验一下吧。

 

3.2.3 void main()与{}

  void是定义不需要返回值,为空的意思。

  main是主函数。

  ()的意思等同于库函数printf的(),用来输入参数用的。

  {}标识函数体的起始。 

  这里涉及的返回值,函数,参数等知识,读者先不用考虑,后面章节会逐一解释,目前读者只需要死记住,每次写程序套用这个格式即可:

void main()

{

    所有程序内容写在{}里面

}

  程序写在大括号{}里即可。

 

3.3 初识编程规范

  写程序的时候,每个人的品味不同,写出来的程序风格也会有区别,但是大体上要参照一定的格式,为的是能让一般程序员看的舒服。比如声明头文件的时候,#include <stdio>,在include后面会加一个空格,再比如main函数的函数体内,printf语句前会添加四个空格,也就是一个TAB按键空出的空间。


好啦,今天的学习就到这里吧!

自学C/C++不易,此路应携手前行。

如果你想跟着小编一起学编程的话!

可以来我的C语言/C++编程学习交流俱乐部,【点击进入】!

还有(源码,零基础教程,项目实战教学视频),欢迎初学者和正在进阶中的小伙伴们!     

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言编程入门系列】—— 第三章,编写第一个C语言程序! 的相关文章

  • Unity学习(十一): Unity中的NetWork使用

    先说一下一些基本概念吧 xff01 复习复习 NAT 穿透技术 NAT 即Network Address Translation xff0c 可译为网络地址转换或网络地址翻译 网络地址转换 NAT Network Address Trans
  • ubuntu提示opengl版本过低-Gallium0.4 on llvmpipe(llvm 3.8 128bits)

    在ubuntu14 04下写GLSL xff0c 需要GLSL 4 0 以上的支持 xff0c 但是编译运行的时候 xff0c 提示我opengl和glsl版本过低 xff0c 只支持1 3 我xx xff0c 我用的卡是Geforce G
  • C#中的继承规则

    1 继承可传递 C从B派生 B从A派生 xff0c 则C不仅继承了B中的成员 xff0c 同时也获得了A中的成员 Object类为所有类的基类 2 派生类是对基类的扩展 xff0c 可以添加新成员 xff0c 但不能除去已经继承的成员的定义
  • 安卓自定义View文章数据滚动显示数值

    本文已经在微信公众号 Android群英传 发表 未经允许不得转载 转载请注明作者AndroidMsky及原文链接 http blog csdn net androidmsky article details 53009886 本文Gith
  • 场景管理方法之BVH介绍

    总结一下最近学习BVH的知识 BVH全称 xff1a Bounding volume hierarchy 这是一种用来管理3D场景中物体的方法 我主要是在光线追踪算法中用这个方法来做加速 xff0c 因为光线追踪算法的计算要求非常高 xff
  • C++ :error LINK2005:函数XXX已经在main.obj中定义--解决方法

    我的情况是这样的 xff1a 我在头文件中定义了一个函数 xff0c 然后这个函数被其他函数引用 但是编译的时候死活通不过 xff0c 一直报错 xff1a error LINK2005 xff0c 费了好大力气 才解决 include 3
  • unity解决快速运动物体碰撞检测穿透问题

    在Unity中 xff0c 快速移动的物体在与其他物体进行碰撞检测时 xff0c 可能会穿透 比如子弹和墙壁的碰撞检测 如何解决这个问题呢 xff1f 网上看了下 xff0c 有说Rigidbody修改continus的 xff0c 但是我
  • leetcode33题解_Search in Rotated Sorted Array

    题意 xff1a 要在一个排好序的但是旋转过的序列中找给定的数字 xff08 通常的题目是 xff0c 比如 xff1a 1 xff0c 2 xff0c 3 xff0c 4 xff0c 5 xff0c 6 xff0c 7 找这组序列中是否有
  • 回溯算法的理解与使用

    最近在做题的过程中发现很多我不会的题目的解决方法都使用了回溯算法的思想 xff0c 说明我对这个算法目前掌握的还不够牢固 xff0c 因此今天花时间来好好了解这个算法 回溯算法是一种算法思想 xff0c 而递归则是具体的代码结构 就我的学习
  • Kmeans基本思想以及和SVM的区别

    由于最近要用到该算法 xff0c 但是发现算法的思想基本忘掉了 xff0c 只知道是聚类算法 xff0c 因此又回头去学习了一番 xff0c 记录下学习的感受 xff0c 方便以后复习 Kmeans算法的基本思想 xff1a 看如下图 xf
  • HTTPConnection与JSON应用实例

    JSON xff1a 一种轻量级的数据交换格式 JSONObject xff1a 一个json对象 包含一对儿 Key Value 数值 xff0c 在Key和Value之间是以逗号 分隔 JSONStringer xff1a json文本
  • VS(Visual Studio)与VC(Visual C++)对应关系

    opencv 2 4 10 gt vc10 vc11 vc12 opencv 2 4 13 gt vc11 vc12 opencv 3 4 0 gt vc14 vc15 opencv 3 4 1 gt vc14 vc15 Visual St
  • 如何在win10下用Anaconda安装gym(强化学习)

    默认已经安装好Anaconda和pycharm 配置libssl 1 1 x64 ddl libcrypto 1 1 x64 dll 把路径 Anaconda3 Library bin 下面的文件复制到路径 Anaconda3 DLLs 下
  • win10系统下TwinCAT3与VS2019之间的ADS通信

    64 WIN10 TwinCAT3 VS2019 ADS 转博后第一次出差 xff0c 来到了UnitedImaging xff0c 这次的任务是负责在ros系统和TwinCAT3之间的 ADS 通信 作为本次第一篇博客 xff0c 先跑通
  • 两步实现安卓手机秒变网络摄像头

    今天大概是兴趣加技术篇 xff0c 程序员不写点有趣的代码 xff0c 怕是很难在女票和家人面前秀出科技感 GITHUB xff1a https github com AndroidMsky RootPlay 如GIF所示 xff0c 自动
  • TwinCAT3与ROS之间的ADS通信实现

    TwinCAT3与ROS之间的ADS通信实现方法 摘要 xff1a TwinCAT xff08 The Windows Control and Automation Technology xff0c 基于Windows的控制和自动化技术 x
  • 基于DDPG、TD3的UR5装配仿真及其对比

    本项目为上海交通大学2020年度秋季学期 xff0c 乐心怡老师讲授的 最优控制 课程的大作业 xff0c 大部分内容基于方晓猛学长的工作 基于神经网络算法的多机械臂协同控制技术研究 xff0c 最近因为开题所以重新温习了一下强化学习 xf
  • Bullet 布料仿真的底层算法分析

    Bullet 可变物体的底层算法分析 1 计算机图形学中可变建模方法1 1 质点 弹簧模型 xff08 离散 xff09 1 2 有限元连续体模型 xff08 连续 xff09 2 布料模拟的两种主要算法2 1 隐式时间积分2 2 基于位置
  • 【文献阅读】Position Based Dynamics

    文献阅读 Position Based Dynamics 摘要3 Position Based Simulation3 1 算法3 2 求解器3 3 约束投影3 4 碰撞检测和回应3 5 阻尼3 6 接触 4 布料仿真4 1 布料的表示4
  • 完成一篇机器人领域期刊论文所需要的一些工具

    完成一篇机器人领域期刊论文所需要的一些工具 书写工具制图工具PDF格式PPT制图VISIO制图 EPS 格式Inkspace 仿真工具MATLAB路径点生成实时仿真动画Gif生成 ROS 仿真Rviz仿真 剪辑工具录屏软件 Obs Stud

随机推荐