指针学习四——指针、数组、地址

指针、数组、地址

指针是以地址作为值的变量,数组名的值是一个特殊的固定地址,看作是指针常量。

int a[100]    ,  *p;

系统把编号为3000,30002...的内存字节作为数组元素a[0],a[1]...的地址。

基地址:内存位置3000是数组a的基地址,即a[0]的地址。

地址常量:数组名a是一个地址常量。

p=a;

p=&a[0];   语句等价,都把3000这个地址值赋给了指针p。

p=a+1;

p=&a[1];

同样,也是等价的,都把3002这个地址值赋给了指针p。

指针内存地址内存单元数组元素
p3000 a[0]
p+13002 a[1]
p+23004 a[2]

 

数组元素求和:

法一:

sum=0;

for(p=a;p<=&[99];p++)

  sum+=*p;

*(a+i)与a[i]等价——地址+1为下一个地址,实际增加的不为一。

法二:

sum=0;

for(p=a;p<=&[99];p++)

  sum+=*(a+1);

法三:

p=a;

sum=0;

for(i=0;i<100;++i)

sum+=p[i];

1.数组a是指针常量,不是变量。a++是非法的。

2.变量p是指向某个指定类型的指针,p+1代表访问的是下一个变量的内存地址。p+i是有意义的。

3.若p和q都是指向数组的指针,p-q产生一个int型的值,表示之间的数组元素的个数。

4.指针每次加一减一,是加上或减去该指针所指向的那个变量数据类型的长度。

p=&a[1];

a[1]的地址是2004,p--后,p的值就是2002,所以p指向a[0]。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值