带有指针和引用的简单函数 所以我有一个C++课程的作业。而且(和所有人一样)我无法理解函数中的指针和引用
我将创建一个原型函数:带有指针和引用的简单函数 所以我有一个C++课程的作业。而且(和所有人一样)我无法理解函数中的指针和引用,c++,arrays,pointers,C++,Arrays,Pointers,我将创建一个原型函数: const double* avr(const double* arr, size_t size, double& average) 其中: arr-是指向主函数中声明的数组的指针 size-是数组的大小 average-是一个参考值,稍后应使用数组中的平均值(arr[]) 函数的要点是用数组元素的平均值注入变量average,然后返回指向数组元素的指针,该元素最接近该平均值 例如,下面的程序: double arr[] = {1,2,3,4,5,7}; siz
const double* avr(const double* arr, size_t size, double& average)
其中:
arr
-是指向主函数中声明的数组的指针
size
-是数组的大小
average
-是一个参考值,稍后应使用数组中的平均值(arr[]
)
函数的要点是用数组元素的平均值注入变量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;
double arr[]={1,2,3,4,5,7};
size_t size=sizeof(arr)/sizeof(arr[0]);
双平均=0;
常数double*p=平均值(arr、大小、平均值);
库特
为什么函数avr
是指针?它指的是什么
这个函数返回一个指向常量float的指针,它返回一个指向最接近平均值的数字的指针,但为什么它是指针呢?我看不出有什么原因,也许只是出于教育目的,我认为没有必要使用指针,应该尽量避免使用指针,这里按值返回会更好
是否有方法将大小数学转换为函数avr
不,你不能,你的函数得到一个指向数组的指针,编译器不知道指针指向什么,这意味着它现在不知道它包含什么,或者它有多少个元素。因此,您需要计算外部的大小,并将其传递给函数
如何将平均值传递给平均参考值
不清楚你在这里问什么,但是这里有一个解释可以帮助你理解通过引用:考虑你有一个函数,比如“代码>空洞FUNC(int and PARAM)”,在这里,当你调用这个方法时,它将在内部声明一个<代码> int引用< /代码>命名<代码> PARAM < /代码>,就像你可以在外面做一样,然后它将是对给定参数的引用,正如您所知,引用是对给定参数的别名,因此您只需传递变量(例如,您有
int x;
只需调用func(x);
),然后在函数buddy中,param
将是x
的别名并被使用
请记住,当您通过引用传递参数时,对该参数的任何更改都会影响您最初传递的参数(它们是相同的,Alias,记得吗?),因此如果您希望自己不要意外更改不想更改的参数,将函数更改为
常量引用
如下void func(int const¶m)代码> 在常规C++项目中,您不使用C样式数组(<代码>双ARR[]/COD>),但<代码> STD::vector < /COD>或<代码> STD::这些类有一个size
方法来获取元素的数量。但如果必须使用c样式的数组,则需要自己传递该数组的大小。您的问题说明函数的返回值是什么-指向数组arr
中最接近计算平均值的元素的指针。函数同样可以返回表示索引的size\t
,因此arr[index]
是最接近计算平均值的元素。毕竟,(&arr[i]-&arr[0])==i
表示i
在0
和size-1
之间的任何值(其中size
,正如您计算的,是arr
中的元素数)。