在C语言中,结构作为一种用户定义的数据类型已被广泛使用。在C语言中使用结构的目的是创建一个单一的数据类型,进一步用于将各种数据类型的变量或元素归为一个类型。该结构已被用作全局变量,因此所有的函数都可以轻松地访问它。这意味着它不能在主方法中声明,这样我们就可以在任何地方使用它。
结构语法
结构声明如下图所示。它以关键字 "struct "和任何被赋予的结构名称开始。在结构体中,我们可以定义许多任何类型的变量。结构体将以";"结束。 为了传递一个函数,我们将在本指南中使用两种方法。让我们来看看这两种方法。
例子01:通过值将结构传递给函数
第一种将结构传递给函数的方法是通过值。让我们用这种方法在shell中用触摸查询的方式创建一个C文件。
$ touch exp.c
创建文件后,你必须在一些编辑器中打开它,即GNU nano编辑器,使用下面所述的命令。
$ nano exp.c
文件被打开后,在文件中写入代码,如图所示。第一行包含标题。一个结构 "human "被声明为有两个变量。一个是大小为 "30 "的字符变量 "name"。另一个是一个整数类型的变量,用于存储人类的年龄。用户在运行时使用scanf方法提供输入。这个输入已经通过对象被保存到结构的变量中。之后,该结构作为一个参数被传递给用户定义的方法show()。这是对show()方法的一个函数调用。show方法在其参数中把结构作为值。结构变量的值已经通过用户定义的函数show()中使用的printf语句显示在控制台。
使用Ctrl+S快捷键保存你的文件。之后,我又使用 "Ctrl+X "快捷键回到终端。我们必须先编译上述的代码。为此我们使用了 "gcc "编译器。最后,发生了一个文件的执行。用户已经添加了它的名字和年龄。该结构已被传递给show()方法作为值。结构值显示如下。
$ gcc exp.c
$ . /a.out
在Ubuntu 20.04的终端窗口中可以看到成功的输出。
例02:通过引用将结构传递给一个函数
现在,让我们从这个插图开始。在这个例子中,我们将看到通过引用将结构传递给一个用户定义的方法。在这个方法中,整个结构或数值并没有被传递给另一个函数。结构的变量的内存地址将作为一个引用传递给方法。因此,我们打开了同一个文件,"exp.c "来更新它。包括了输入输出的标准头。我们创建了一个名为 "Cal "的新结构,有两个整数型变量n1和n2。已经创建了 "Cal "结构的引用对象。在主方法之前已经声明了 "Sum() "方法的函数原型。
主函数包含scanf()方法,用于在执行时收缩用户的输入。数值已经通过引用使用它们的内存地址传递给结构变量。这里使用了"&"号,用于将结构变量的内存地址与用户输入的值绑定。变量对象 "c "和 "total "的地址和值已经作为引用传递给了函数 "sum"。
函数 "Sum "通过对对象 "c "的引用获得结构变量n1和n2的值,并将它们相加。结果值被保存在变量n1中。主方法显示两个变量的总和。
编译并运行该代码。用户添加了两个数字,两个数字的总和被显示出来。这里已经利用了gcc和 "a.out "命令。
$ gcc exp.c
$ . /a.out
在Ubuntu 20.04的终端窗口中可以看到成功的输出。
总结
这篇文章包含了在C语言中向用户定义的函数传递结构的实现。为此,我们采用了两种方法,即通过值和引用。在学习如何在C语言中向函数传递结构时,你可以利用这两种方法。我们希望这篇文章能够帮助你最好地理解在C语言编程中向任何用户定义的函数传递结构的概念。