zoukankan      html  css  js  c++  java
  • C++二维数组名的再探索

    #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';
    }
  • 相关阅读:
    scrapy 链接数据库创表语句
    工作问题总结
    插入排序
    centos6.5 安装python2.7.5
    冒泡排序
    [Python笔记]第十篇:模块续
    [Python笔记]第九篇:re正则表达式
    [Python笔记]第八篇:模块
    [Python笔记]第六篇:文件处理
    [Python笔记]第五篇:递归
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/12002918.html
Copyright © 2011-2022 走看看