c语言之数组小究

前阵子看了一下c专家编程,有些东西有了深入的了解。

就按照他说的做了一下练习,发现文章不少啊!

先贴代码吧。

以下为代码段1:

#include <stdio.h>
void array_1(char ca[]);
void array_2(char* pa);
char ga[]={'b','c','d','e','f'};
int main()
{
	printf("&ga=%d &(ga[0])=%d &(ga[1])=%d\n",&ga,&(ga[0]),&(ga[1]));
//	printf("&ga=%d ga[0]=%d ga[1]=%d\n",&ga,ga[0],ga[1]);
	array_1(ga);
	array_2(ga);
	getchar();
	return 0;
}
void array_1(char ca[])
{
	printf("%d\n",&ca);
	printf("%d\n",&(ca[0]));
	printf("%d\n",&(ca[1]));
}
void array_2(char* pa)
{
	printf("%d\n",&pa);
	printf("%d\n",&(pa[0]));
	printf("%d\n",&(pa[1]));
	printf("%d\n",++pa);
}

以下为代码段2:

#include <stdio.h>
void array_1(char ca[]);
void array_2(char* pa);
char ga[]={'b','c','d','e','f'};
int main()
{
	printf("&ga=%d &(ga[0])=%d &(ga[1])=%d\n",ga,&(ga[0]),&(ga[1]));
//	printf("&ga=%d ga[0]=%d ga[1]=%d\n",&ga,ga[0],ga[1]);
	array_1(ga);
	array_2(ga);
	getchar();
	return 0;
}
void array_1(char ca[])
{
	printf("%d\n",ca);
	printf("%d\n",&(ca[0]));
	printf("%d\n",&(ca[1]));
}

void array_2(char* pa)
{
	printf("%d\n",pa);
	printf("%d\n",&(pa[0]));
	printf("%d\n",&(pa[1]));
	printf("%d\n",++pa);
}
输出结果如下:


从以上可以分析出:

1、代码段1中,&ga输出的为数组ga的首地址,而代码段2中ga的输出同代码段1的&ga

      这就验证了在&和sizeof时 数组名代表整个数组,而其他情况下数组名均为数组首地址。

2、从代码段1中可以看出&pa和&ca输出的仅为pa和ca的变量地址,而代码段2中,由于pa和ca所指都为数组首地址,所以输出相同。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值