码迷,mamicode.com
首页 > 编程语言 > 详细

关于数组的a和&a的区别:一个是普通的指针,一个是数组的指针

时间:2015-03-21 15:37:00      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:数组   首地址   指针   

这个问题是我和同学讨论时,产生的思考,后来做的实验性解答。
先来看一段小程序

1.  #include<iostream>  
2.  using namespace std;  
3.    
4.  int main()   
5.  {   
6.  int a[5]={1,2,3,4,5};  
7.  int *ptr=(int *)(&a+1);  
8.  cout<<*(a+1)="<<*(a+1)<<"*(ptr-1)="<<*(ptr-1);  
9.  return 09.  } 

输出结果:
*(a + 1) = 2
*(ptr – 1) = 5
原因是a代表数组a的首地址,而&a代表的是整个数组a的地址,目前它们的值是一样的。但是如果当它们分别进行加1的时候操作,代表的含义就不同了
测试用例代码:

1.  #include<iostream>  
2.  using namespace std;  
3.    
4.  int main() {  
5.      int a[5]={1,2,3,4,5};    
6.      cout<<" a type="<<typeid(a).name()<<endl;  
7.      cout<<" &a type="<<typeid(&a).name()<<endl;
8.      return 08.  }  

输出结果:
a type = int *
&a type = int (*)[5]
也就是说 一个是普通的指针,一个是数组的指针,二者严格的讲,类型不同,划分的尺度大小不同

关于数组的a和&a的区别:一个是普通的指针,一个是数组的指针

标签:数组   首地址   指针   

原文地址:http://blog.csdn.net/moretechseu/article/details/44515801

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!