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

C++指针与数组

时间:2015-08-12 13:22:16      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

对C++里面的多维数组进行操作

    int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
    int * p1 = (int *)(arr + 1);
    cout << p1[0] << endl;
    int * p2 = (int *)(&arr + 1);
    cout << p2[-1] << endl;
    cout << arr << endl;
    cout << &arr << endl;
    p1 = (int *)arr[1];
    cout << p1[0] << endl;

运行上述代码调试中间过程发现
arr是一个int(*)[3]类型,&arr是一个int(*)[2][3]类型,例如下例:

    int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
    int (*p1)[3] = arr;
    int (*p2)[2][3] = &arr;

&arr返回了整个数组作为的指针

同时写了一个小例子

    int arr[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
    cout << arr << endl << &arr << endl;

输出结果:
技术分享
我理解应该是arr是数组名,就是数组存储的首地址,&arr是对整个数组作为变量进行取值,所以返回的地址都是数组首地址,是相同的,只是指针类型上,arr是整形指针,&arr是数组指针。

数组指针:指向数组,指针大小跟数组大小一样
指针数组:一个元素代表一个指针,指针大小都一样,受指针数组类型约数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++指针与数组

标签:

原文地址:http://blog.csdn.net/zhangzhengyi03539/article/details/47442347

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