gpt4 book ai didi

c++ - 带有指针和引用的简单函数

转载 作者:行者123 更新时间:2023-11-30 05:07:46 24 4
gpt4 key购买 nike

所以我有一个 C++ 类(class)的家庭作业。并且(像所有人一样)我无法理解函数中的指针和引用。

我要创建原型(prototype)函数:

const double* avr(const double* arr, size_t size, double& average)

地点:

arr - 是指向在 main 函数中声明的数组的指针

size - 是一个数组的大小

average - 是一个引用,稍后应该从数组中注入(inject)平均数 (arr[])

函数的要点是将数组元素的平均平均值注入(inject)变量average,然后返回指向数组元素的指针,该元素最接近该平均平均值

例如下面的程序:

double arr[] = {1,2,3,4,5,7};
size_t size = sizeof(arr) / sizeof(arr[0]);
double average = 0;
const double* p = aver(arr, size, average);
cout << *p << " " << average << endl;

应该打印:4 3.66667

不想走捷径,所以不期待答案。但是我确实有一些问题。

  • 为什么函数 avr 是一个指针?它指向什么?
  • 有没有办法将大小的数学转换为函数avr?我的意思是 - 我想保持 main() 干净,并将 size_t 大小的数学运算保存在 avr() 中。 (显然我不能改变原型(prototype))
  • 如何将平均值传递给平均值引用?

提前致谢。

最佳答案

Why is the function avr a pointer? What does it point to?

这个函数返回一个指向常量float的指针,它返回一个指向最接近平均数的指针,但为什么是指针呢?我看不出任何原因,也许只是教育目的,我认为没有必要使用指针,应该尽量避免使用指针,这里按值返回会更好。

Is there a way to transfer a mathematics of size to the function avr?

不,你不能,你的函数得到一个指向你的数组的指针,编译器不知道指针指向什么,这意味着它现在不知道它包含什么,或者它有多少元素。所以你需要计算外面的大小,然后像你一样把它传递给函数。

how can I pass an mean average to a average reference?

不清楚你在这里问什么,但这里有一个解释可以帮助你理解通过引用传递:假设你有一个像 void func (int &param) 这样的函数,当你调用它时方法它在内部将声明一个名为 paramint reference 就像你可以在外面做的那样,然后它将是对你给定参数的引用,如你所知,引用是一个 <给定参数的 strong>别名,所以你只需传递你的变量(例如你有 int x; 只需调用 func (x);)然后在函数 buddy param 将是 x 的别名并被使用。

请记住,当您通过引用传递参数时,对该参数的任何更改都会影响您原来传递的参数(它们是相同的,别名,还记得吗?),所以如果您想避免意外更改您不想更改的参数,更改您的函数以将其作为 constant reference 像这样 void func (int const &param);

关于c++ - 带有指针和引用的简单函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47129079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com