我目前正在从书本学习c ++,但我发现了一些我无法描述的代码。它也可能是c / c ++的混合物。
就是这个:
structure *readThingsFromFile(structure *arrayOfThings, int &arraySize)
{
}
我知道它返回结构(或者ir返回指向结构的指针?)。基本上我不知道第一个'*'的意思是什么,以及'&'是什么意思装置
由于
答案 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
的引用。