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

C++二维数组名的再探索

时间:2019-12-07 19:41:19      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:二维数组   std   bsp   i++   顺序   指针   维数   pre   clu   

#include <iostream>

int main()
{
    
    int d2a[3][4] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };

    //输出 0,1,2,3,4,5,6,7,8,9,10,11
    for (size_t i = 0; i < 3; i++)
    {
        for (size_t j = 0; j < 4; j++)
        {
            std::cout << d2a[i][j] << ",";
        }
    }

    //输出 0077FD04,0077FD04,0077FD14,0077FD24
    //可见二维数组名是数据首地址,d2a[0],d2a[1],d2a[2]分别是第一行,第二行,第三行的首地址
    std::cout << d2a << "," << d2a[0] << "," << d2a[1] << "," << d2a[2] << std::endl;

    //最直观的顺序输出所有元素的方式
    //输出 0,1,2,3,4,5,6,7,8,9,10,11
    int* pa = (int*)d2a;
    for (size_t i = 0; i < 12; i++)
    {
        std::cout << *(pa + i) << ",";
    }
    
    //最难理解的二维数组名当指针的输出方式
    //输出 0,1,2,3,4,5,6,7,8,9,10,11
    for (size_t i = 0; i < 12; i++)
    {
        std::cout << *(*d2a + i) << ",";
        
        //错误方式,虽然二维数组指向数组首地址,但相当于行指针,d2a+0 = d2a[0], d2a+1 = d2a[1],d2a+2=d2a[2]
        //std::cout << *(d2a + i) << ",";

    }


    //理解了二维数组名的实质后,下面的就容易理解了
    char str[] = "ab";
    char(*px)[3] = &str;

    (*px)[0] = a;
    (*px)[1] = b;
    (*px)[2] = c;
}

 

C++二维数组名的再探索

标签:二维数组   std   bsp   i++   顺序   指针   维数   pre   clu   

原文地址:https://www.cnblogs.com/timeObjserver/p/12002918.html

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