黑马程序员_iOS_C_二维数组

原创 2015年11月17日 16:15:29

——- android培训java培训、期待与您交流! ———-

1.二维数组定义
c语言并不支持多维数组。
格式:类型说明符 数组名[常量表达式1(行)][常量表达式2(列)]

/*
二维数组为特殊的一维数组
即一维数组的元素为数组
*/
int a[2][3]//2行3列

2.二维数组初始化
2.1定义的同时初始化
1)完全初始化

int a[2][3] = {{1,2,3},{4,5,6}};//分段
/*
    //2行3列
    1  2  3
    4  5  6
*/

//连续赋值
int a[2][3] = {1,2,3,4,5,6,};
//可以省略第一维
int a[][3] = {{1,2,3},{4,5,6},{7,8,9}};//int a[3][3]
int a[][2] = {1,2,3,4,5,6,7,8}//4行2列 int a[4][2]

2)部分初始化

int a[2][3] = {1};
/*
   1 0 0
   0 0 0
*/
int a[2][3] = {{1},{2}};
/*
   1 0 0
   2 0 0
*/
int a[3][4] = {1,2,3,4,5};
 /*
   1 2 3 4
   5 0 0 0
   0 0 0 0
*/
//省略第一维
int a[][4] = {1,2,3,4,5,6,};//int a[2][4]
/*
   1 2 3 4
   5 6 0 0
*/
//二维数组中,第一维可以省略,第二维不能省

2.2先定义后初始化

int a[3][4];
//第一维下标:0 1 2
//第二维下标:0 1 2 3

3.二维数组的遍历
格式:数组名[第一维下标][第二维下标]

/*
二维数组的遍历:
    访问二维数组的每一个元素
    int a[3][4]//每一个元素都是双下标

        |  0   1   2   二维下标
     ---------------
       000  01  02
       110  11  12
       220  21  22
       330  31  32
一维下标

    //遍历
    int a[2][3] = {123456};
    forint i = 0;i<2;i++){
        for(int j = 0;j<3;j++){
            printf("%d  ",a[i][j]);
        }
        printf("\n");
    }
*/

4.二维数组存储
两种方式:按行排列,按列排列
储存方式:
1)计算机给二维数组分配一块连续的内存空间
2)从数组名代表的首地址一次存入:第一行,第二行,…
3)每一行从行首地址依次存入:第一个元素,第二个元素,…
4)每个元素占相同字节数(取决于数组类型)
5)数组元素之间地址连续

int a[2][2] = {1,2,3,4};
//数组的首地址
//在二维数组中存在:
//数组首地址 = 数组名 = &a[0] = &a[0][0]
printf("  a = %p",a);
printf(" &a[0] = %p",&a[0]);
printf(" &a[0][0] = %p",&a[0][0]);
//数组第二行首地址
printf(" &a[1] = %p",&a[1]);
printf(" &a[1][0] = %p",&a[1][0]);

二维数组的行数和列数:

int a[2][2] = {1,2,3,4};
//二维数组的总字节数 = 元素个数*元素类型
int len = 2*2*sizeof(int);
//每一行的字节数
len = sizeof(a[0]);
//列数
len = sizeof(a[0])/sizeof(int);
//行数
len = sizeof(a)/sizeof(a[0]);

5.二维数组作为函数参数
5.1二维数组元素作为函数参数
二维数组元素作为函数参数,相当于变量的值传递过程。
5.2二维数组名作为函数参数

//实参与形参公用了一块内存空间
//用数组名作为函数的参数是地址传递
void test(int a[][3]){
}

注意事项:
1)类型和长度要一致
2)二维数组作为函数的形参可以不写第一维

黑马程序员_iOS_C_数组

——- android培训、java培训、期待与您交流! ———-1.数组基本概念 1.1 把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。 1.2 数组属...
  • g363226848
  • g363226848
  • 2015年11月17日 01:28
  • 67

黑马程序员_我的Linux基础整理笔记

Linux Linux文件目录和分区 文件目录: /:根目录 /root:存放root用户的相关文件 /home:存放普通用户的相关文件 /bin:存放普通用户的可执行命令 /sbin:...
  • zhengzhongjie1990
  • zhengzhongjie1990
  • 2014年07月05日 17:08
  • 1510

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1530

黑马程序员—黑马的学习环境没有亲身经历的人是很难体会的!!!

文章来源:黑马程序员,黑马论坛     公元2013年1月10号我拖着沉重的行李箱和对未来的憧憬来到了黑马,公元2013年6月7号我怀抱着满满的知识和对老师的不舍离开了黑马。到现在离开黑马也有一个...
  • heima_28
  • heima_28
  • 2014年08月26日 15:16
  • 1407

黑马程序员--Oracle学习_day06

----------  android培训 、java培训、期待与您交流! ---------- 学习目标:1,理解oracle的pl/sql的概念   2,掌握pl/sql编程技术(...
  • xpaibeyond
  • xpaibeyond
  • 2015年01月16日 14:28
  • 200

黑马程序员—怎么去黑马?吃住问题解答

文章来源:黑马程序员,黑马论坛
  • heima_25
  • heima_25
  • 2014年08月24日 13:24
  • 1141

黑马程序员--一个为进入黑马云六的C++屌丝的28个日夜

首先我要告诉大家,我是一个在大学学了三年C++的人,可能你们会问我,学C++不是挺好的?干嘛突然间要重新学习java呢?况且C++以后的发展不也挺好吗?        我应该怎么回答你们呢?这也是我...
  • heima_hb5
  • heima_hb5
  • 2014年08月22日 08:52
  • 2399

黑马程序员--一段给后者的面试总结

文章来源:黑马程序员, 北京之旅,行北京万事,通百姓生活。其实,我也是个农村出来的孩子,大学没毕业就来北京参加“黑马”,毕业之后,还是没有任何的机遇与机会让我能在那里一展雄威,这就是我们这些菜鸟的悲...
  • heima_hb6
  • heima_hb6
  • 2014年08月24日 13:51
  • 524

黑马程序员:Hibernate基础知识

android培训、java培训
  • u012159707
  • u012159707
  • 2013年09月26日 15:42
  • 584

关于我在黑马程序员培训毕业后的亲身体验

首先申明:我本人已经于2016年5月份在广州传智播客java培训完毕业,和黑马程序员官网没有任何的利益往来,也没有人出钱给我帮他们做软文推广,这是我在黑马程序员的亲身体验,不存在虚构。...
  • wjycgl
  • wjycgl
  • 2017年04月20日 15:27
  • 1631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员_iOS_C_二维数组
举报原因:
原因补充:

(最多只允许输入30个字)