a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 99|回复: 0

[程序员] 2012年软件水平初级资格程序员考试重点知识9

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
int  a[5] = {1,2,3,4,5};
& p( F/ _' Y8 j, j3 h. _2 f2 t7 b7 M1 f; i2 H
  数组和指针是C语言的精髓也是它的难点。特别是对于数组名a以及&a,很多同学一直都搞不清楚。今天就说说我自己的理解,希望能对大家有所帮助。
, Q  G& b5 e9 v, E
% \+ ]! {& S/ N  a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能说浙江省政府就等于杭州市政府。
7 g% A( T& O% v$ v$ d: \0 S
2 M; p/ b7 Y3 P, L0 D  为了方便理解,我们来对数组进行运算。假设a的地址是0x00ffff00,那么a+1和&a+1分别是多少。3 ^* ^+ C! ^3 i5 y0 r7 @& d7 \

) j5 `3 O1 ^2 ?4 A, y" L& u# u  因为a表示的是a[0]的首地址,所以a+1加的就是一个a[0]元素的大小,即一个int的大小4,所以a+1为0x00ffff04
$ F* R1 z6 a. p( c& A$ o5 h& G# J% K5 P
1 K9 z% {% d% u1 D  &a代表的是整个数组的首地址,所以&a+1加的就是整个数组的大小,即4*5=20,所以&a+1为0x00ffff14
& `6 K1 y' `- p1 _# |& q3 n7 P+ q! E# P% O8 A  q& M% B  ]
  其实他们完全是两回事,只不过刚好数值上相等而已。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-16 21:05 , Processed in 0.289345 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表