知识点导读
- 宏定义常量
- 定定义函数
- 条件语句与条件运算符
- 普通函数【返回值,名,形参表】
- 函数功能复用
- 数组作为函数的参数
- 数组与循环的结合处理
- 数组的形参表达形态
#include <stdio.h>
#define N 10
#define MUL1(a, b) (a) * (b)
#define MUL2(a, b) a *b
#define MAX(a, b) a > b ? a : b
#define MIN(a, b) a > b ? b : a
int getMax2(int x, int y);
int getMax3(int x, int y);
int getMax4(int x, int y);
int getMax5(int x, int y);
int get3Max(int x, int y, int z);
int get4Max(int w, int x, int y, int z);
int getNMax1(int a[], int n);
int getNMax2(int *a, int n);
int getNMax3(int *a, int n);
int main(int argc, char const *argv[])
{
int arr[N] = {
11, 33, 55, 22, 44, 99, 88, 77, 65, 56};
printf("max is %d\n", getMax2(arr[0], arr[1]));
printf("max is %d\n", getMax3(arr[2], arr[3]));
printf("max is %d\n", getMax4(arr[4], arr[5]));
printf("max is %d\n", getMax5(arr[6], arr[7]));
printf("max is %d\n", get3Max(arr[0], arr[1], arr[2]));
printf("max is %d\n", get4Max(arr[0], arr[1], arr[2], arr[3]));
printf("max is %d\n", getNMax1(arr, N));
printf("max is %d\n", getNMax2(arr, N));
printf("max is %d\n", getNMax3(arr, N));
printf("\n");
return 0;
}
int getMax2(int x, int y)
{
return x > y ? x : y;
}
int getMax3(int x, int y)
{
if (x > y)
{
return x;
}
return y;
}
int getMax4(int x, int y)
{
int res = x;
if (x < y)
{
res = y;
}
return res;
}
int getMax5(int x, int y)
{
int res;
if (x > y)
{
res = x;
}
else
{
res = y;
}
return res;
}
int get3Max(int x, int y, int z)
{
return getMax2(getMax2(x, y), z);
}
int get4Max(int w, int x, int y, int z)
{
return getMax2(get3Max(x, y, z), w);
}
int getNMax1(int a[], int n)
{
int i;
int max = a[0];
for (i = 1; i < n; i++)
{
if (max < a[i])
{
max = a[i];
}
}
return max;
}
int getNMax2(int *a, int n)
{
int i;
int max = *(a + 0);
for (i = 1; i < n; i++)
{
if (max < *(a + i))
{
max = *(a + i);
}
}
return max;
}
int getNMax3(int *a, int n)
{
int max;
int *p;
p = a;
max = *p;
while(p++<a+n)
{
if (max < *p)
{
max = *p;
}
}
return max;
}
数组作为函数形参的两种形态
数组作为实参使用的形态
- 数组索引方式
- 数组名指针偏移方式
- 指针变量移动方式
取值与取址
- 可以直接使用a[i]方式操作数组元素
- 可以直接使用*(a+i)方式操作数组元素
- 当p指针指向数组名后,可以移动*(p++)即可实现元素遍历,但要注意,不可以越界操作