#include <stdio.h>
void minmax(int *a,int len,int *max,int *min);
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,12,13,14,15,16};
int min,max;
int *p=&min;
printf("main sizeof(a)=%lu \n",sizeof(a));
printf("main a = %p\n",a);
minmax(a,sizeof(a)/sizeof(a[0]),&min,&max);
printf("min=%d,max=%d\n",min,max);
printf("a[0]=%d\n",a[0]);
printf("*p=%d\n",*p);
printf("p[0]=%d\n",p[0]);
printf("*a=%d",*a);
return 0;
}
void minmax(int *a,int len,int *min,int *max)
{
int i;
printf("minmax sizeof(a)=%lu\n",sizeof(a));
printf("minmax a = %p\n",a);
*min=*max=a[0];
for (i=1;i<len;i++)
{
if (a[i]<*min)
{
*min=a[i];
}
if (a[i]>*max)
{
*max=a[i];
}
}
a[0]=1000;
}
数组变量其实是特殊的指针
所以说,int*p=a,无需取地址符。
但是数组的单元表达的是变量,所以需要用取地址符。但是呢,实际上a的地址就是等于a0的地址。
[]运算符可以对数组做,也可以对指针做。
*号运算符可以对指针做 ,也可以对数组做。
数组变量是常量的指针,所以不能被赋值。