带指针的函数

Function with pointer?

本文关键字:函数 指针      更新时间:2023-10-16

我目前正在从书中学习c++,但我发现了一些代码,我无法完全描述。也有可能是c/c++的混合物。

就是这个:

structure  *readThingsFromFile(structure *arrayOfThings, int &arraySize)
{
}

我知道它返回结构(或者ir返回指向结构的指针?)。基本上我不知道第一颗星"*"是什么意思,也不知道"&amp方法

感谢

为了方便起见,让我们(暂时)用char替换structure,因为我认为structure类型也有一些问题。然后我们有一个这样的函数:

char *readThingsFromFile(char *arrayOfThings, int &arraySize)
{
// Some Code
}

第一个char *描述函数readThingsFromFile返回值类型

返回值是在关闭函数时传递给函数调用方的值。这就是您通常在代码中看到的return var;

在您的特定情况下,此返回值来自类型char **将其确定为指针,因此当函数关闭时,它将返回一个字符指针。

接下来,有两个函数参数:

char *arrayOfThings:

显然,这也是一个字符指针,只是在这一点上它是一个函数参数,这意味着你必须将它提供给函数。

int &arraySize:

&将所需参数确定为所谓的引用(在本例中为整数)。引用意味着,函数需要一个普通变量(这里:只有一个普通整数,没有指针),但它会将其视为引用,这意味着在内部它实际上只是使用原始变量。这一点对您来说很重要,因为这意味着对函数中变量的更改是全局的,而不仅仅是函数本身的局部更改(记住:当您将正常参数传递给函数时,您可以直接更改它们,而不会在调用函数中看到任何这些)。

现在回到structure——关于*&运算符,它对structure的行为与对charint的行为相同(它只是指向结构theN的指针/引用)。在这种情况下,structure本身只是表示一种数据类型。

没有"C和C++的混合物"这回事。代码要么是C,要么是C++,当然也可以是其他语言。

这是C++,因为&的使用将arraySize声明为引用。这意味着readThingsFromFile()中的代码可以更改arraySize的值,并且调用者也会"看到"这种更改,因为函数引用了调用者的参数。

它返回指向名为structure(一种类型)的对象的指针。它有两个参数——指向structure(一种类型)的指针和指向int的引用。