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

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

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); ;9. }

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

; 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. }

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

每一发奋美文努力的背后,必有加倍的赏赐。

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

相关文章:

你感兴趣的文章:

标签云: