emmm,这是我的第一篇博客。

作为一个软件工程专业的学生,我希望自己能在编程方面有不错的成就,我们老师告诉我们学编程就要写博客,在写博客的过程中不断成长,结交朋友,所以我就开始尝试写专业相关的博客。

我打算写一个能够让小白从零开始学会基本编程的类似教程的东西,其实也是在印证自己所学,为自己做一个痕迹管理。但是我认为我的博客里面可能会常常出现一些我意料之外的错误,所以希望博友们指正。

当然了,C/C++编译器怎么安装这类白到透明的技巧,我觉得自己百度就好~

希望可以帮助到有需要的人~


编译软件:Dev-C++ 5.11

编译器:TDM-GCC 4.9.2 32-bit Debug

操作系统:Windows 10 64位 2018春季更新版本


 #include <stdio.h>
int main()
{
printf("HelloWorld!\n");
return ;
}

最最基本的一个小程序,却包含了C语言中单个程序运行需要的全部内容。

首先是预处理

#include <stdio.h>

这句代码的意思是:调用头文件"stdio.h",这个头文件是 “standard input & output",也就是包含了标准输入输出语句的头文件。预处理了这个头文件以后,我们就可以使用printf()函数和scanf()函数进行输出和输入数据。

换言之,"stdio.h"头文件里包含了printf()函数和scanf()函数,预处理"stdio.h"使得我们可以使用这两个函数。

事实上,我们也可以自己写函数,然后保存为后缀".h"的文件,再在主程序所在的目录保存,我们就可以通过在主程序里面预处理我们自己的头文件,这样可以直接在主程序里使用我们自己的函数。

不过我们在调用自己的头文件时,要用""来调用,而不是<>:

#include "stdio.h"

没错,标准库里的头文件也能这样去调用。

然后是主函数

int main()
{
}

之前我介绍预处理命令时提到过函数,那么什么是函数呢?函数包含返回类型、函数名、参数、函数体四个部分。

最开始的int就是这个函数的返回类型,意思是函数结束必须要有一个int类型的返回值。

return ;

int是整数类型,它表示如0、1、2、-1之类的整数,return的意思就是返回,使用return 0其实有某种习惯的因素,大家普遍接受主函数返回0表示主函数正常结束。

函数名就是你写的函数的名字。

在C/C++里面,所有程序运行都要找到main()函数的位置,从main()函数开始一行行地运行下去,所以我们用C/C++写代码,一定都会有一个名字叫main的函数,并且我们所有的代码,都会以这个函数为中心写下。

当然,你要是乐意,你也可以写自己的函数:

void my_fun(void){}

不过,就算你自己的函数摆在main()函数前面,编译器还是会绕过你的函数,先行编译主函数。

看我的示例,其中void就是另一种返回类型,意为“空”,也就是说返回一个空值,也就不需要return 0之类的了。

我示例里面的函数名就是my_fun,在它后面有一对(),这对圆括号内写了一个“void”。嗯……写不写并没有什么影响,反正圆括号里实际上什么都没有。

这对圆括号内的东西,就是参数

比如我给自己的函数添加一个参数:

void my_fun(int a){}

或者我觉得一个参数太少了,那就两个呗:

void my_fun(int a,int b){}

好了,如果你看了我之前对返回类型的介绍,你就可以知道这两个参数”a"和"b"都是整数了。

这这句代码的意思是,将一个/两个整数传递给my_fun函数的参数a/a、b。

参数a、b实际都是变量,就跟我们高中学的f(x)=x+1中的x一样,是一个可以变化的、用于储存数据的单元。

不过加上int以后,我们就只能在a、b里面存整数了。

当然如果你不加的话你就存不了任何东西啦!

至于传递参数的作用?下一篇博客我自然会提到,因为下一篇博客我就要用到函数了。

函数体就是函数用{}包围的部分。

{
printf("HelloWorld!\n");
}

这一部分实际上是函数的实现,一个函数到底可以做什么,就看这里了。

这就是输出语句

printf("HelloWorld!\n");

百度百科的解释为:printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。程序编写时经常会用到此函数。printf()函数的挪用式样为: printf("<式样化字符串>",<参量表>);

可以看出,printf()实际上是"stdio.h"里的一个函数,作用就是将一些内容打印到屏幕上。

在我们的这一行代码中,打印内容是"HelloWorld!\n",实际效果是屏幕上面输出:

HelloWorld!

那么我们可以看到,printf()函数将""内的内容完整地打印到了屏幕上。

不过细心的小伙伴会注意到,\n不见了。

\n其实是转义字符,表示换行,也就是将光标移动到下一行。

转义字符还是有一些的,比如\b,作用就是将光标左移一位。

想要了解更多转义字符请自行问度娘。

百度百科的解释里,printf()内除了""括住的内容,还有一个叫做“参量表”的东西,留到下一篇吧!

从零开始学编程_第A001期_C语言HelloWorld详解的更多相关文章

  1. 从零开始学安全(五)●Vmware虚拟机三种网络模式详解

    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). NAT(网络地址转换模式) NAT(网络地址转换)vm ...

  2. 为什么大部分的程序员学编程,都会选择从C语言开始?

    软件行业经过几十年的发展,编程语言的种类已经越来越多了,而且很多新的编程语言已经在这个领域从开始的默默无闻到如今风风火火,整个编程语言朝着集成化方向发展,这样会导致很多的初学者选择上不像以前那么单一了 ...

  3. 【和我一起学python吧】Python安装、配置图文详解

     Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境( ...

  4. 【Unity编程】Unity中关于四元数的API详解

    本文为博主原创文章,欢迎转载,请保留出处:http://blog.csdn.net/andrewfan Unity中关于四元数的API详解 Quaternion类 Quaternion(四元数)用于计 ...

  5. C++_系列自学课程_第_9_课_C语言风格字符串_《C++ Primer 第四版》

    前面说了写关于数组和指针的内容,这次在这里讨论一下字符串,讨论一下C语言风格的字符串. 在C语言里面我们利用字符数组来对字符串进行处理, 在C++里面我们前面说过一种类类型string可以对字符串进行 ...

  6. 全国计算机等级考试二级教程-C语言程序设计_第12章_C语言中用户标识符的作用域和存储类

    生命周期的概念,也就是生存期,仅仅适用于变量. 代码.常量.定义等等都是与程序共存亡的,他们的生命周期就是程序的生命周期. 静态分配:生命周期是整个程序执行周期,内存会一直存在,在main函数执行之前 ...

  7. 学数据库还不会Select,SQL Select详解,单表查询完全解析?

    查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式> .. ...

  8. Java并发编程(06):Lock机制下API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.Lock体系结构 1.基础接口简介 Lock加锁相关结构中涉及两个使用广泛的基础API:ReentrantLock类和Condition接 ...

  9. 嵌入式应用中CGI编程中POST、GET及环境变量详解

    原载地址:http://3633188.blog.51cto.com/3623188/828095 1.POST和GET      一个CGI程序在于服务器之间的信息传输和数据传输一般通过两种方法,即 ...

随机推荐

  1. java.sql.SQLException: Unknown system variable 'query_cache_size'

    改为 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java< ...

  2. SSM框架整合之单独整合Mybatis

    整合步骤 导入必须jar包 mybatis核心jar包 mybatis依赖jar包 数据库驱动包 建立数据库表 建立实体类 建立Mapper接口 建立sql映射文件 <?xml version= ...

  3. 使用IDEA连接mysql数据库

    1.IDEA配置数据库连接 2.添加数据库: 3.填写数据库信息: database输入框里面填写要连接的数据库名称 然后点击test connection,会弹出一个框,提示下载驱动,点击进行下载即 ...

  4. java上传大文件(局域网环境)

    文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...

  5. luogu 2491 [SDOI2011]消防 / 1099 树网的核 单调队列 + 树上问题

    Code: #include<bits/stdc++.h> #define ll long long #define maxn 300001 #define inf 1000000000 ...

  6. HDU 4511 小明系列故事——女友的考验 ( Trie图 && DP )

    题意 :  给出编号从1 ~ n 的 n 个平面直角坐标系上的点,求从给出的第一个点出发到达最后一个点的最短路径,其中有两种限制,其一就是只能从编号小的点到达编号大的点,再者不能走接下来给出的 m 个 ...

  7. Python_016(面向对象之属性和类方法)

    一.特性(property,setter,deleter) 1.属性:将一个方法伪装成一个属性,在代码级别上没有本质的提升,但是看起来更合理; class Person: def __init__(s ...

  8. Android 获取屏幕尺寸与密度(转载)

    android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一 ...

  9. #1114-JSP指令

    JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言. 语法格式如下: <%@ directive attribute = "value"%& ...

  10. 20180829-Java多线程编程

    Java 多线程编程 Java给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分. 程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特 ...