用Qt从零开始学C++:函数简介

        上一篇简单介绍了一下源码文件。这篇我们开始对每行进行详细介绍。

        从main.cpp文件开始。代码如下:

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

        #include "widget.h"  是把widget.h这个头文件包含进main.cpp文件中。头文件简介看这里
        #include <QApplication> 是把QApplication这个文件包含进来,在QtCreator中按F2跟踪这个QApplication,发现QApplication文件里面只有1行#include "qapplication.h",也就是说实际include进来的文件是qapplication.h。

        需要注意的是,代码第一行是#include "xxxx" 形式,第二行是#include <xxxx>形式,一个采用双引号,另一个采用尖括号,二者有什么区别呢?区别主要是编译器在预处理文件时的头文件查找目录不同。#include "xxxx" 是在本工程内查找xxxx文件,即main.cpp所在的目录内查找;#include <xxxx>是在开发环境的系统目录内查找xxxx文件。这里系统目录默认为“D:\Qt\Qt5.9.1\5.9.1\mingw53_32\include\模块目录”,在.pro文件中添加了QtWidgets模块,目录为“D:\Qt\Qt5.9.1\5.9.1\mingw53_32\include\QtWidgets”。进入QApplication文件后再#include 某个文件就视为在QApplication工程下的#include ,因此#include 就用双引号,即#include "qapplication.h"。

        第4行起,到最后一行,整个是main函数。main函数是整个程序的入口,也就是启动的地方,上一篇文章提到过。换句话说,程序开始运行时,操作系统首先要找到程序的main函数,然后才能开始下一步工作,不管我们的程序有多花哨的功能,main函数是少不了的,而且名字也必须是这4个字母,不能改变。

        说了这么多main函数,那么什么是函数呢?英语里面叫function,而function另一个意思作用“功能; 职能; 机能;”。我认为函数就是具有一定功能的一段代码。为了便于使用,得给它起个名字,这个名字叫做函数名,这样只要我们在代码中写上这个函数名,计算机就知道我们要用这个功能,通过这个函数名找到这段代码。计算机找到函数名后就一行一行顺序执行函数名后面的代码,但是它并不知道功能代码到哪结束,因此需要用一对花括号{  }把这段功能代码包裹起来,这样计算机就知道到运行到哪一行时函数就结束了,这对花括号连同里面的代码叫做函数体

        函数除了要有函数名函数体外,多数函数还要有参数返回值。参数就好比炒菜时要用的食材和工具,返回值就是炒出来的菜。在C++函数中,参数一般写在函数名后面,用圆括号括起来,返回值写在函数名前面,注意这里“参数”和“返回值”实际应该叫做参数类型返回值类型。(类型是指数值类型,下篇再说)比如我设计了一个炒红烧肉函数:

红烧肉 炒红烧肉(五花肉,各种调料)
{
    将五花肉洗净
    锅里加适量的水烧热后,放入五花肉煮到肉颜色变浅;
    捞起五花肉,切块备用;
    锅里加入油,然后加入蒜瓣和姜片煸炒;
    炒出香味后,倒入五花肉快煸炒至肉块微微出油;
    然后倒入一大碗温水;
    加入老抽,生抽,八角,花椒,红曲粉一起煮;
    盖上锅盖小火焖上40分钟左右;
    收汁,翻炒均匀,装盘;
    return 红烧肉;
}

函数名就叫“炒红烧肉”,原料是五花肉和各种调料,也就是参数类型是五花肉、调料,别的肉不行,不然做出来的就不是红烧肉那味儿了;炒好之后给我的应该是红烧肉,也就是返回值类型必须是红烧肉,要是最后端上一份水煮肉片,那也不行。所以抽象一下就是

返回值类型 函数名(参数列表)
{
    函数体
}

有的函数没有参数,比如,我需要一个暂停函数叫pause5s,功能是当我调用它时程序暂停5秒,其他什么动作都不做,这不需要任何参数,调用到它时程序就暂停运行5秒钟。但是返回值一定要有,就算刚才的那个pause5s没有返回任何有用的东西,也需要有一个void的返回值类型。void表示返回值类型为空,即如下形式:

void pause5s()
{
    暂停5秒钟;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值