到目前为止,我们已经知道在C编程中,可以将变量作为函数的参数进行传递。但是,我们无法直接将函数作为参数传递给另一个函数。然而,通过使用函数指针,我们可以传递函数的引用作为参数。这个过程被称为按引用调用,因为函数参数以指针的形式传递,指针保存着参数的地址。如果函数使用指针进行修改,那么这些修改也会反映在传递变量的地址上。因此,C编程允许我们创建指向函数的指针,并将其作为参数传递给其他函数。我们可以按照以下方式创建函数指针:

- 阅读剩余部分 -

我们知道我们可以创建指向任何数据类型的指针,如int、char、float,我们也可以创建指向函数的指针。函数的代码始终驻留在内存中,这意味着函数具有某个地址。我们可以通过使用函数指针来获取内存的地址。让我们看一个简单的例子。

- 阅读剩余部分 -

空指针(Null Pointer)是一个不指向任何内存位置的指针。它存储段的基地址。空指针基本上存储了空值,而void是指针的类型。空指针是一种特殊的保留值,它在 stddef 头文件中定义。在这里,Null意味着指针引用第0个内存位置。如果我们没有任何地址要分配给指针,那么它被称为空指针。当将NULL值赋给指针时,它被视为空指针。

- 阅读剩余部分 -

正如我们已经了解的那样,“指针是一个变量,用于存储另一个变量的内存地址”。解引用操作符,也称为间接操作符,用于表示指针变量的解引用操作。当我们对指针进行解引用时,将返回指针所指向的变量的值。为什么使用解引用指针?解引用指针用于以下几个原因:它可以用于访问或操作指针所指向的内存位置中存储的数据。对解引用指针应用的任何操作都将直接影响它所指向的变量的值。

- 阅读剩余部分 -

到目前为止,我们学习了指针应该指向与指针声明中指定的类型相同的地址。例如,如果我们声明了一个int指针,那么这个int指针不能指向float变量或其他类型的变量,即它只能指向int类型的变量。为了解决这个问题,我们可以使用空指针(void指针)。空指针表示一个通用指针,可以指向任何数据类型。我们可以将任何数据类型的地址赋值给空指针,并且可以将空指针赋值给任何类型的指针,无需进行任何显式的类型转换。空指针的语法

- 阅读剩余部分 -

Web 程序通常有两种部署方式:传统部署和云部署。传统部署指的是在使用物理主机或虚拟主机上部署程序,你通常需要在一个 Linux 系统上完成所有的部署操作;云部署则是使用其他公司提供的云平台,这些平台为你设置好了底层服务,包括 Web 服务器、数据库等等,你只需要上传代码并进行一些简单设置即可完成部署。这一章我们会介绍使用云平台 PythonAnywhere 来部署程序。

- 阅读剩余部分 -

虽然我们的程序开发已经完成,但随着功能的增多,把所有代码放在 app.py 里会让后续的开发和维护变得麻烦。这一章,我们要对项目代码进行一次重构,让项目组织变得更加合理。Flask 对项目结构没有固定要求,你可以使用单脚本,也可以使用包。这一章我们会学习使用包来组织程序。先来看看我们目前的项目文件结构:

- 阅读剩余部分 -

在开发大型程序时,为程序编写自动化测试是非常重要的。手动测试所有功能不仅耗时而且容易出错,而自动化测试可以减轻这个负担并提高测试的可靠性。本章我们将介绍如何使用 Python 的 unittest 测试框架编写单元测试。单元测试单元测试是对程序中的独立单元(如函数、方法)进行测试的一种形式。我们将使用 Python 标准库中的 unittest 框架来编写单元测试。下面通过一个简单的例子来介绍一些基本概念。

- 阅读剩余部分 -