带指针的函数
Function with pointer?
我目前正在从书中学习c++,但我发现了一些代码,我无法完全描述。也有可能是c/c++的混合物。
就是这个:
structure *readThingsFromFile(structure *arrayOfThings, int &arraySize)
{
}
我知道它返回结构(或者ir返回指向结构的指针?)。基本上我不知道第一颗星"*"是什么意思,也不知道"&方法
感谢
为了方便起见,让我们(暂时)用char
替换structure
,因为我认为structure
类型也有一些问题。然后我们有一个这样的函数:
char *readThingsFromFile(char *arrayOfThings, int &arraySize)
{
// Some Code
}
第一个char *
描述函数readThingsFromFile
中返回值的类型。
返回值是在关闭函数时传递给函数调用方的值。这就是您通常在代码中看到的return var;
在您的特定情况下,此返回值来自类型char *
。*
将其确定为指针,因此当函数关闭时,它将返回一个字符指针。
接下来,有两个函数参数:
char *arrayOfThings
:
显然,这也是一个字符指针,只是在这一点上它是一个函数参数,这意味着你必须将它提供给函数。
int &arraySize
:
&
将所需参数确定为所谓的引用(在本例中为整数)。引用意味着,函数需要一个普通变量(这里:只有一个普通整数,没有指针),但它会将其视为引用,这意味着在内部它实际上只是使用原始变量。这一点对您来说很重要,因为这意味着对函数中变量的更改是全局的,而不仅仅是函数本身的局部更改(记住:当您将正常参数传递给函数时,您可以直接更改它们,而不会在调用函数中看到任何这些)。
现在回到structure
——关于*
和&
运算符,它对structure
的行为与对char
或int
的行为相同(它只是指向结构theN的指针/引用)。在这种情况下,structure
本身只是表示一种数据类型。
没有"C和C++的混合物"这回事。代码要么是C,要么是C++,当然也可以是其他语言。
这是C++,因为&
的使用将arraySize
声明为引用。这意味着readThingsFromFile()
中的代码可以更改arraySize
的值,并且调用者也会"看到"这种更改,因为函数引用了调用者的参数。
它返回指向名为structure
(一种类型)的对象的指针。它有两个参数——指向structure
(一种类型)的指针和指向int
的引用。
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针