C语言中的多维数组

来源:互联网 发布:淘宝图片尺寸软件 编辑:程序博客网 时间:2024/05/18 00:49
439人阅读 评论(1)收藏 举报

这个系列的文章主要是讲一些C语言的语法中比较模糊的问题,和一些常用的语言技巧.

首先声明的是:对于C语言语法和语言技巧的讲解,我将以源码的形式给出,这些 都是C语言中比较基础,实用而且是重要的,当然对于C语言的老手,这些都是班门弄斧.但是我还是觉得,不管是新手还是老手,这些都是你提高语言能力有帮助的.

另外要说的是:文章开始的大部分是从一些精典的C语言书籍中提取的,但是不缺笔者的一些感想.我相信随着学习的深入会有更多精彩的东西.

推荐书籍:<<The C Programming Language>>,<<Pointers on C>>,<<Expert C Programming>>,<<C Traps and Pitfalls>>

文章以代码对照注释形式给出,还有运行结果对照.

/*=====================================
本程序是为了学习而使用的的测试程序,用来
说明C语言中的一些学习误区,对C语言的某些
知识作详细的讲解
=======================================*/
#include <stdio.h>
#include <stdlib.h>

void main()
{
  /*================================================
  主题:C语言中的多维数组
  内容:C语言中定义和引用多维数组的维一方法就是使用数组
  的数组(就是说数组的数组和多维数组在这里是同一个概念,
  在pascal语言中不是这样),C语言中实际把数组当成一种向量
  (vector),就是某种对象的一维数组(数组元素可以是一维数组
  和其它).
  ==================================================*/
  /*1.分解多维数组,多维数组中数组元素的定位*/
 int data[2][3][4] ={{{1,2,3,4},{5,6,7,8},{9,10,11,12}},{{13,14,15,16},
 {17,18,19,20},{21,22,23,24}}};
    printf("第1个测试值为:%d/n",data[1][2][3]); //测试中数组越界并没有报错

 //p是指向一个二维数组的指针,这个地方要保证p后面的维数与data的后二维相同
 int (*p)[3][4] = data;
 printf("第2个测试值为:%d/n",p[1][2][3]);

    //r是一个指向一维数组的指针,可以指向data中的第一个或第二个一维数组(把data的元素看成一个一维数组)
 int (*r)[4] = data[1];
 printf("第3个测试值为:%d/n",r[1][2]);

    //t是一个int型的指针,让它指向data中的第三维的首元素(这个第三维是任意的)
 int *t = data[0][0];
 printf("第4个测试值为:%d/n",t[3]);
  
    //上面的指针指向的数组维数不同增量差别会很大
    printf("第5个测试值为:%x/n",r);
    r++;
 printf("第6个测试值为:%x/n",r);
 printf("第7个测试值为:%x/n",t);
 t++;
 printf("第8个测试值为:%x/n",t);

  /*2.多维数组的初使化*/
   //上面已经提到一个多维数组初使化的例子,下面又是一个
 int data1[][3] = {{1,2,3},{4,5}};  //维数大于初使值的个数则初使化为0
 printf("第1个测试值为:%d/n",data1[1][2]);

  /*3.初使化二维字符串数组*/
 char fruit[][9] = {"apple",   //方法一
        "orange",
        "ege",
        "banana"};
 printf("第1个测试值为:%s/n",fruit[1]);

 char *anima[] = {"tiger",   //方法二
      "lion",
      "chick",
      "elephont"};
  
   printf("第1个测试值为:%s/n",anima[1]);
}

以下是运行结果:

第1个测试值为:24    

第2个测试值为:24

第3个测试值为:19

第4个测试值为:4

第5个测试值为: 12ff50 

 第6个测试值为: 12ff60         

第7个测试值为: 12ff20

第8个测试值为: 12ff24

第1个测试值为:0

第1个测试值为: orange

第1个测试值为: lion        

原创粉丝点击