Files

54 lines
1.3 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdbool.h>
// !数组是一种特殊的指针,数组名就是数组的首地址
/*
数组变量本身表达地址,所以
int a[10]; int*p=a;//无需用&取地址
但是数组的单元表达的是变量,需要用&取地址
a == &a[O]
[]运算符可以对数组做,也可以对指针做:
p[0] <==>a[0]
*运算符可以对指针做,也可以对数组做:
*a= 25:
数组变量是const的指针,所以不能被赋值
int a[] <==> int * const a=...
*/
void minmax(int a[], int len, int *max, int *min);
int main(void)
{
int c[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 16, 17, 21, 23, 55};
int min, max;
printf("min sizeof(c) = %lu\n", sizeof(c));
minmax(c, sizeof(c) / sizeof(c[0]), &max, &min);
printf("max = %d, min = %d\n", max, min);
int *p = &min;
printf("*p = %d\n", *p);
printf("p[0]=%d\n", p[0]);
return 0;
}
void minmax(int a[], int len, int *max, int *min)
{
int i;
printf("minmax sizeof(a) = %lu\n", sizeof(a));
*max = *min = a[0];
for (i = 1; i < len; i++)
{
if (a[i] < *min)
{
*min = a[i];
}
if (a[i] > *max)
{
*max = a[i];
}
}
}