[C语言] 指针在数组求和中的使用

指针、数组和地址之间的关系

在定义数组时,编译器必须分配基地址和足够的存储空间,以存储数组的所有元素。数组的基地址是在内存中存储数组的起始位置,是数组中第一个元素(下标为0)的地址,因此数组名本身是一个地址即指针值。在访问内存方面,指针和数组几乎相同,区别在于:指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址,可以看作常量指针。

假设给出定义int a[100], *p;,系统将编号为3000,3002,3004,…的内存字节作为数组元素a[0],a[1],a[2],…,a[99]的地址(假定系统int型变量的长度为2个字节),那么其中内存位置3000是数组a的基地址,也是a[0]的地址。

于是p=a;p=&a[0];是等价的,p=a+1;p=&a[1];亦是等价的。

数组和指针之间的关系如下图:

指针 内存地址 内存单元 数组元素
p 3000 a[0]
p+1 3002 a[1]
p+i 3000+2i a[i]
p+99 3198 a[99]

对数组元素求和

如果已经对数组a进行了赋值,以下语句对数组元素求和:

	sum = 0;
	for (p = a; p <= a[99]; p++)
		sum += *p;

在循环中,指针变量p的初

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值