2012年软考程序员考试考前知识点复习指导(23)
09-13
0

int  a[5] = {1,2,3,4,5};

  数组和指针是C语言的精髓也是它的难点。特别是对于数组名a以及&a,很多同学一直都搞不清楚。今天就说说我自己的理解,希望能对大家有所帮助。

  a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能说浙江省政府就等于杭州市政府。

  为了方便理解,我们来对数组进行运算。假设a的地址是0x00ffff00,那么a+1和&a+1分别是多少。

  因为a表示的是a[0]的首地址,所以a+1加的就是一个a[0]元素的大小,即一个int的大小4,所以a+1为0x00ffff04

  &a代表的是整个数组的首地址,所以&a+1加的就是整个数组的大小,即4*5=20,所以&a+1为0x00ffff14

  其实他们完全是两回事,只不过刚好数值上相等而已。  

 

相关内容

热门资讯

2012年软考程序员考试考前知... 2012年软考程序员考试考前知识点复习指导(6)
四川计算机软考:各市州人事考试... 四川计算机软考:各市州人事考试机构咨询电话
成绩合格考生的资格登记表如何存... 成绩合格考生的资格登记表如何存入个人人事档案?
软件水平资格:网络管理员考试说... 软件水平资格:网络管理员考试说明
甘肃取得高级计算机软考资格可聘... 甘肃取得高级计算机软考资格可聘任高级工程师职务
2011年软件水平考试:网络管... 2011年软件水平考试:网络管理员学习辅导笔记9
软件水平资格:程序员考试说明 软件水平资格介绍:程序员考试说明
软件水平资格:电子商务技术员考... 软件水平资格:电子商务技术员考试说明