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

标签 c++ arrays pointers

所以我有一个 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 ¶m) 这样的函数,当你调用它时方法它在内部将声明一个名为 paramint reference 就像你可以在外面做的那样,然后它将是对你给定参数的引用,如你所知,引用是一个 <给定参数的 strong>别名,所以你只需传递你的变量(例如你有 int x; 只需调用 func (x);)然后在函数 buddy param 将是 x 的别名并被使用。

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

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

相关文章:

php - 在MySQL表中插入多项选择

C++ 计算未以正确格式打印

java - 从同一个 pojo 数组创建两个列表,修改一个列表,同样的事情也会影响其他列表

c++ - TCHAR 数组的深拷贝被截断

c++ - QT_AUTO_SCREEN_SCALE_FACTOR 没有效果

c++ - 使用 cv::Mat 类型时如何在图像上覆盖文本

vector<Object *> use 和 new Object() 的 C++ 编程问题

c++ - qt 和 libbluedevil : No Such slot

C++ 指向 boolean 值的指针

c++ - 这是查找动态分配数组长度的好方法吗?