指针功能?

时间:2013-12-11 11:38:44

标签: c++ function

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

就是这个:

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

我知道它返回结构(或者ir返回指向结构的指针?)。基本上我不知道第一个'*'的意思是什么,以及'&'是什么意思装置

由于

3 个答案:

答案 0 :(得分:1)

没有“C和C ++的混合”这样的东西。代码可以是C,C ++,也可以是其他语言。

这是C ++,因为使用&声明arraySize作为参考。这意味着readThingsFromFile()中的代码可以更改arraySize的值,并且调用者也将“看到”此更改,因为该函数具有对调用者参数的引用。

答案 1 :(得分:1)

仅仅是为了它,让我们用structure替换char(暂时),因为我认为你也有类型structure的麻烦。然后我们有这样的函数:

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

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

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

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

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

char *arrayOfThings

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

int &arraySize

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

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

答案 2 :(得分:0)

它返回指向名为structure(类型)的指针。它需要两个参数 - 指向名为structure(类型)的引用和对int的引用。