学了C C++老久了,有些基本的用法必须注意,强化在心中,避免每次用的时候再去查书。比如数组作为函数参数& 指针作为函数参数的问题,今天加深了一下!
【例】写一个函数max_min(),作用:从一个数组a[N],从a[N]中找出最大值和最小值:
void max_min(const int *a, const int N, int* max, int* min)
{
*max = *min = a[0];
int i;
for (i = 1; i < N; i++)
{
if (*max < a[i])
*max = a[i];
if (*min > a[i])
*min = a[i];
}
}
在这个例子中要注意两个点:
1. 数组作为函数参数
void max_min(const int *a, constint N…)
也可以写成 void max_min(const int a[], const int N…)
主函数中相应的代码:
int xc[4]
for (i = 0; i<4; i++)
{
xc[i]= ;/*****代码初始化*****/
}
int x_max, x_min,;
max_min(xc, 4, &x_max,&x_min);
可以看到,调用形式即max_min(xc, 4,…)
2. 指针作为函数参数
这个问题在很久以前学习C语言的时候就遇到过,并且专门作为一个难点来学习,记得当时所举的例子就是交换两个变量的值的问题。
在上面的例子中同样,也是这个问题。
max_min函数没有反回值,但是我们要得到的最大最小值通过max,min两个参数传回主函数中,这里就必须用地址或指针的方式来完成:
void max_min(…, int *max, int *min)
在主函数中,见上面的代码最后一行,用取地址符来调用:max_min(…, &x_max, &x_min);