C语言——指针与数组

#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的地址。
[]运算符可以对数组做,也可以对指针做。
*号运算符可以对指针做 ,也可以对数组做。
数组变量是常量的指针,所以不能被赋值。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值