学习每一个编程语言都是从 "Hello world!" 开始的,这好像就是编程界一条不成文的规定一样。

在这篇文章中,我将教大家编写一个可以输出 "Hello world!" 的程序。

在vs2019中创建解决方案和项目:

运行vs2019,选择“创建新项目”->“空白解决方案”->“下一步”->填写项目名称,就是解决方案的名称,我写的是“c_learn”->填写路径,可以理解为“工作区域”,这里建议新建一个文件夹来专门存储你的各种解决方案->“创建”。

接下来在右侧“解决方案管理器”中右键解决方案那一项->“添加”->“新建项目”->“空项目”->“下一步”->填写项目名称,一边就是你那个输出程序的名字,我这里填写的是“0x01HelloWorld”->填写位置,这里一般不用改->“创建”。

至此,解决方案和项目已经创建好了。但是我们还是不能开始编写代码,因为我们还需要进行一些配置以及添加源代码文件:

在右侧“解决方案管理器”中右键你刚刚创建的项目->“属性”->“配置属性”->“高级”->设置“字符集”为“使用多字节字符集”->“常规”->“输出目录”->“浏览”->在你的解决方案文件夹中新建一个文件夹专门用来存储编译好的程序->“确定”。

注:这里修改输出目录是为了让输出目录保持一致,因为在vs中切换“x86”、“x64”、“Debug”以及“Release”等选项时,输出目录会发生变化,这回占用更多的空间,并且可能会导致一些意想不到的问题。当然,如果你不想该,也没有什么大问题。

然后在右侧“解决方案管理器”中右键“源文件”选项->“添加”->“新建项”->“c++文件(.cpp)”->设置名称,我写的是“entry.cpp”->位置一般不用改->“添加”。

现在,我们就可以开始真正的开始写程序了。

示例程序:

 #include <stdio.h>//Include a header
#include <windows.h> //Entry of the program
int main(int argc, char** argv)
{
printf("Hello world!");//Print a String on the screen
system("pause");//Pause the program
return ;//Return a value to the system
}

在编译器中输入这些代码后,点击“编译”按钮,就会在工程所在文件夹下生成一个可执行文件(.exe),双击运行即可。

注:在vs中,可以直接按ctrl+f5运行。

对于初学者来讲,对这段代码肯定是会有很多不懂的地方。但是,我们先让程序跑起来,看看是什么样子再说。下面我会对这些代码一一解释。

解析:

1:

#include <stdio.h>//Include a header
#include <windows.h>

这句话是什么意思呢?从字面意思上来讲,include在英文中是“包含”的意思。所以,这句话的作用是告诉编译器讲一个头文件包含到我们的代码里面。这个头文件呢,通常以(.h)结尾,他其实呢跟我们的源代码文件(.c)差不多,都写着代码。所以这一句就可以说是把别人写好的代码白嫖了过来给我们自己用。有关include的知识先说到这里,之后在讲预编译的时候再往细了讲。

那么这个stdio.h又是什么东西呢?其实,它就是我们上文中提到的头文件。其中stdio是Standard Input and Output的缩写,意思为标准输入输出。所以,只有使用它,我们才能进行输入输出操作,在这个例子中就是在屏幕上显示一串字。

另一个windows.h提供了在windows系统中所要使用到的一些功能。

后面的//的意思是注释,就是//以及它后面的所有字符(但是不包括下一行)都是不会影响程序的运行的,注释是为了提高程序的可读性,说白了就是让你以及别人能尽可能看懂你的程序。在c语言中,注释还有另一种写法:

 #include <stdio.h>/*Before me is the include sentence
I will not affect the program
After me is the program*/
int main(int argc, char **argv)
{...}

意思就是从/*到*/之间的都是注释(包含/*和*/)。

注:在vs中,选中代码后先按下ctrl+k再按下ctrl+c即可注释掉选中代码;选中后先按下ctrl+k再按下ctrl+u即可取下注释选中的代码。

2:

int main(int argc, char **argv)

这个东西我们先不细讲,在之后讲了数据类型之后再来细讲argc和argv是什么东西。现在我们需要知道的是,这个东西叫main函数,是这个程序的入口,也就是一个程序开始的地方。因此本程序会从main函数的第一行开始执行。

3:

printf("Hello world!");//Print a String on the screen

printf是一个字符输出函数,在这里它会吧括号里面的字符串输出到屏幕上。

注意:在c语言以及c++中,字符串必须用一对双引号括起来;用单引号只能括起来一个字符。

4:

system("pause");//Pause the program

这句话的作用是将程序暂停住。

我们知道,在程序执行完输出函数后,它会接着执行下一条语句。如果没有本条语句,那么接下来执行的将会是:

return ;//Return a value to the system

这条语句会向系统返回一个值,并且告诉系统:“我已经运行完毕,可以退出”,然后系统就会关掉你的程序。

这么一来,字符串刚刚被显示出来,窗口就被关闭了(严谨一点来说就是程序退出了),我们就没有时间去看到输出的字符串了。(电脑的运行速度是很快的)

所以,如果能将程序暂时暂停住,我们就有时间看到输出的字符串了。

注:在某些编译器中,程序会在退出前暂停住,所起在那些编译器中,就不需要人为的暂停程序。但是,为了保险起见,我还是建议大家加上这句话。

提示:

如果显示编译失败,请检查以下列出来的可能原因:

1:忘记打分号;

2:使用了中文字符;

3:把0打成了o;

4:该空格的地方没有空格;

5:括号没有成对出现。

0x01 C语言-编写第一个hello world的更多相关文章

  1. 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序

    前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...

  2. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  3. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  4. Leaf - 一个由 Go 语言编写的开发效率和执行效率并重的开源游戏服务器框架

    转自:https://toutiao.io/posts/0l7l7n/preview Leaf 游戏服务器框架简介 Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏 ...

  5. 用 C 语言编写一个简单的垃圾回收器

    人们似乎觉得编写垃圾回收机制是非常难的,是一种仅仅有少数智者和Hans Boehm(et al)才干理解的高深魔法.我觉得编写垃圾回收最难的地方就是内存分配,这和阅读K&R所写的malloc例 ...

  6. 二、Go语言开发环境安装与编写第一个Hello World

    本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言. 全文使用环境如下: Go语言版本:1.13 操作系统:deepin 使用工具:Goland开发工具 Go语言追溯历史 Go语言2009 ...

  7. linux c语言编写一个shell壳

    目的:我们要用c语言编写一个shell可以运行在linux机器上的. 介绍:shell所在的层次 我们要做的是操作系统,用于用户与操作系统进行交互的myhsell 思路:用户输入  一行字符串,我们先 ...

  8. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...

  9. 基于php基础语言编写的小程序之计算器

    基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...

随机推荐

  1. Python环境搭建(win)——Python官方解释器

    Python官方解释器搭建方法: 本文以当前最新的3.8.1为例 1.在电脑上打开Python的官网https://www.python.org/ 2.找到Download下的All releases ...

  2. 聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交

    MySQL 数据库中的两阶段提交,不知道您知道不?这篇文章就简单的聊一聊 MySQL 数据库中的两阶段提交,两阶段提交发生在数据变更期间(更新.删除.新增等),两阶段提交过程中涉及到了 MySQL 数 ...

  3. centos7中修改运行级别

    centos6 在centos6里打开vim /etc/inittab文件看到下面有一行 id:5:initdefault,因此我们可以通过修改这个文件的id后的数字来修改运行级别 如果我们想要直接切 ...

  4. 不停机替换线上代码? 你没听错,Arthas它能做到

    写在前边 有没有这样一种感受,自己写的代码在开发.测试环境跑的稳得一笔,可一到线上就抽风,不是缺这个就是少那个反正就是一顿报错,线上调试代码又很麻烦,让人头疼得很.阿里巴巴出了一款名叫Arthas的工 ...

  5. ActiveMQ 快速入门教程系列 第一章 点对点消息实现

    ActiveMQ 开发包下载及运行环境搭建 主页:http://activemq.apache.org/目前最新版本:5.11.1开发包及源码下载地址:http://activemq.apache.o ...

  6. 如何获取 C# 类中发生数据变化的属性信息

    一.前言 在平时的开发中,当用户修改数据时,一直没有很好的办法来记录具体修改了那些信息,只能暂时采用将类序列化成 json 字符串,然后全塞入到日志中的方式,此时如果我们想要知道用户具体改变了哪几个字 ...

  7. kvm 中 Guest Is already in use 处理办法

    在安装kvm时,如果安装相同名字的虚拟机,是会有错误提示的,就算是删除了虚拟机的xml文件,也会弹出错误提示.如下: ERROR Guest name 'test' is already in use ...

  8. django 发布会签到系统web开发

    引言 最近学习了虫师的发布会签到系统demo,结合自己所学django知识,对demo重新塑造了一下.也是为了练练手,巩固知识.现在就分享一下成果~ Django工作流 学习django web开发, ...

  9. 洛谷P1649 【[USACO07OCT]障碍路线Obstacle Course】

    题目描述 Consider an N x N (1 <= N <= 100) square field composed of 1 by 1 tiles. Some of these ti ...

  10. Go语言实现:【剑指offer】链表中环的入口结点

    ​该题目来源于牛客网<剑指offer>专题. 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null. Go语言实现: /** * Definition for sing ...