前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言第六讲,数组

C语言第六讲,数组

作者头像
IBinary
发布2018-03-30 12:07:52
1.3K0
发布2018-03-30 12:07:52
举报
文章被收录于专栏:逆向技术逆向技术

          C语言第六讲,数组

一丶什么是数组

数组,就是一整块的连续内存空间.

且类型都是一样的.大小一样

比如:

1.1数组元素的访问

我们要访问数组,例如上面,我们访问元算2,元素3等等怎么访问..

比如有一个数组为:

int Arry[3] = {1,2,3};   //数组定义初始化.
Arry[0] = 1;
Arry[1] = 2;                 //数组的访问
......        

利用下标来进行访问.

利用程序来进行访问

   int Ary[10] = { 0 };
    for (int i = 0; i < 10; i++)
    {
        printf("%d\r\n",i);
    }

动态的大小识别.

  int Ary[10] = { 0 };
    for (int i = 0; i < sizeof(Ary)/sizeof(Ary[0]); i++)
    {
        printf("%d\r\n",i);
    }

这里用到了一个关键字,Sizeof, sizeof关键字是求大小的关键字. 例如我们求数组的总大小. 然后 利用总大小 除以数组元素个数的大小. 就得出来了数组的个数.

1.2一维数组的声明

在C语言中,或者C++语言中,我们要声明数组. 不用考虑在哪里开辟,开辟多大的问题,只需要你给我一个大小.我编译器自动的来进行开辟内存空间供你使用.

类型 数组名[数组元素的个数]
例如:
    int Ary[3];   //定义一个Ary的数组,有3个元素.

注意,声明的时候是个数.也就是说数组有3个元素.  但是访问的时候是下表.从0开始访问

例如:

ary[0] = 1;
ary[1] = 2;
ary[2] = 3;

总共有三个.

声明的时候则是告诉编译器, 我声明的类型是 int类型,数组名字数Ary,个数是3个. 那么这个数组所占的内存空间则是  3 * 4 = 12个字节大小.

公式计算:

  3(数组元素个数) * 类型  = 内存空间所占大小.

1.3数组应该注意的问题.

在C语言中,数组的声明不支持动态声明.

什么意思?

  也就是说,你需要给定我个数.我来进行申请.但是你不能把这个个数给一个变量保存.让我跟随变量来申请.

例如:

int nCount = 10;
int Ary[nCount];  //错误的

数组的定义可以和普通成员变量的定义放在一起.

例如:

int A, ary[5],b;

二丶数组初始化

上面我们虽然定义了数组.但是并没有仔细讲解数组的初始化

数组的初始化常用的有三种.

第一种, 大括号初始化.

int Ary[3] = { 1, 2 ,3}; //数组中的元素1,元素2,元素三分别初始化为了1,2,3

第二种.全部初始化.

int Ary[3] = {0}; //数组的每个元素全部初始化为了0

第三种,不确定个数的初始化.

int Ary[] = { 1, 2, 3} ;//有的时候你并不知道你的数组有多大. 但是又不用动态的申请空间.
所以这样写会默认有3个元素. 

 三丶二维数组和高维数组

有的时候一维数组并不能满足我们的需求.

这个是否就需要更高维的数组了.

例如:

int Ary[2][2];  定义二维数组

这样则声明了一个二维数组. 代表我们申请了 2行 2列的数组. 大小是 2*2的矩阵.  

这几个元素分别是:

Ary[0][0] Ary[0][1]
Ary[1][0] Ary[1][1]

二维数组的定义初始化.

int nNum[2][2] = {{0,1},{2,3}}; 使用两个括号即可.

二维数组对部分元素进行初始化.

int nNum[2][2] = {{1},{0}};

二维数组的访问

二维数组本质是一维数组.但是为了理解.所以说成是二维数组.

我们利用程序来对其进行访问.

二维数组初始化

    int Ary[3][4] = {0};
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            Ary[i][j] = i + j; //重要语句. i是行,j是列
        }
    }
二维数组输出
    for (int i = 0; i < 3; i++ )
    {
        for (int j = 0; j < 4; j++)
        {
            printf(" %d", Ary[i][j]);
        }
        puts("\r\n");
    }

输出结果.

高维数组则一样,不过一般用不到高维数组.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •           C语言第六讲,数组
    • 一丶什么是数组
      • 二丶数组初始化
        •  三丶二维数组和高维数组
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档