• 0x01 C语言-编写第一个hello world


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

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

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

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

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

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

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

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

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

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

    示例程序:

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

    在编译器中输入这些代码后,点击“编译”按钮,就会在工程所在文件夹下生成一个可执行文件(.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语言中,注释还有另一种写法:

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

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

    注:在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 0;//Return a value to the system

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

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

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

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

     提示:

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

    1:忘记打分号;

    2:使用了中文字符;

    3:把0打成了o;

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

    5:括号没有成对出现。

  • 相关阅读:
    类加载器ClassLoader
    JAVA分别获取日期中的年、月、日
    sql 安全问题
    马尔科夫链
    触发器、锁、事务和事务控制
    索引、视图、存储过程、函数、游标
    字符集
    数据类型选择
    存储引擎
    错误:too many indices for array
  • 原文地址:https://www.cnblogs.com/starchenzyme/p/12262282.html
Copyright © 2020-2023  润新知