数组基础总结

原创 2018年04月15日 10:39:56

这里写图片描述

数组总结

定义:数组是有序的并且具有相同类型的数据的集合。

一维数组的定义和引用

1. 一维数组的定义

一维数组的定义方式为
类型说明符 数组名[常量表达式];
例如:

int a[10];  //定义一个有10个整型元素的数组a
char c[200]; //定义一个有200个字符型元素的数组c
float f[5];  //定义一个有5个单精度浮点型元素的数组f

说明:
(1) 数组名的命名规则和变量名相同,遵循标识符命名规则。
(2) 在定义数组时,需要指定数组中的元素个数,即数组长度。例如,a[10],表示数组中有十个元素个数,注意,下标是从0开始的,这十个元素是:a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9],.请特别注意,按上面的定义,不存在数组元素 a[10]。
(3) 常量表达式中可以包括常量和符号常量,不能包含变量。
例如:下面这样定义数组是错误的:

int n;
scanf("%d",&n);
int a[n];

2. 一维数组的引用

数组必须先定义,然后使用。c语言规定只能逐个引用数组元素而不能一次引用整个数组。
数组元素的表示形式为
数组名[下标]
下标可以是整型常量或整型表达式。例如:
a[0] = a[5] + a[7] - a[2*3]
注意: 定义数组时用到的“数组名[常量表达式]” 和引用数组元素时用到的“数组名[下标]” 的区别,例如:

int a[10];  //定义数组长度为10
t = a[6];   //引用a数组中序号为6的元素。此时6不代表数组长度

数组元素的引用,例如:

#include<stdio.h>
int main()
{
    int i,a[10];
    for(i = 0;i<=9;i++)
    {
        a[i] = i;
    }
    for(i = 9;i>=0;i--)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    return 0;
}

运行结果如下:
9 8 7 6 5 4 3 2 1 0
程序使 a[0] ~ a[10] 的值为 0~9,然后按逆序输出。

3.一维数组初始化

对数组元素初始化可以用以下方法实现。
(1) 在定义数组时对数组元素赋予初值。例如:

int a[10]={0,1,2,3,4,5,6,7,8,9};

将数组元素的初值依次放在花括号内。
(2) 可以只给一部分元素赋值。例如:

int a[10]={0,1,2,3,4};

定义a数组有10个元素,但花括号内只提供5个初值,这表示只给前面5个元素赋值,后面五个元素为0.
(3) 如果想使一个数组中全部元素值为0,可以写成:

int a[10]={0,0,0,0,0,0,0,0,0,0};
    或
int a[10]={0};
    不能写成
int a[10]={0*10};

(4) 由于数组元素已经确定,可以不指定数组长度。例如:

int a[5]={1,2,3,4,5};
可以写成
int a[]={1,2,3,4,5};

一维数组举例

#include<stdio.h>
int main()
{
    /*找出数组最小值和它所对应的下标*/
    int i;
    int a[5]={2,5,7,8,1};
    int min = 0;           //假设a[0]是最小值下标
    for(i=0;i<5;i++)
    {
        if(a[i]<a[min])    //如果a[i]比假设的最小值还小
        min = i;           //再假设a[i]是新的最小值
    }
    printf("最小值为:%d\n下标为:%d\n",a[min],i);
    return 0;
}

运行结果
这里写图片描述


二维数组的定义和引用

1.二维数组的定义

一般形式

类型说明符 数组名 [常量表达式][常量表达式];
例如:
float a[3][4] , b[5][10];
定义a为3*4(3行4列)的数组,b为5*10(5行10列)的数组。

2.二维数组的引用

引用二维数组的元素要指定两个下标,即行下标和列下标,形式为:
数组名[行下标][列下标]
二维数组的元素在内存中按行/列方式存放,即先存放第0行的元素,再存放第一行的元素……其中每一行的元素再按照列的顺序存放。

3.二维数组的初始化

在定义二维数组时,也可以对数组元素赋初值,二维数组的初始化两种方法
(1) 分行赋初值
类型名 数组名[行长度][列长度]

int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

初始化数组a,此时a数组中的各元素为:
1   2   3
4   5   6
7   8   9

也可以对部分元素初始化


    int b[3][3] = {{1,2,3},{},{4,5,6}}

省略的元素初值都为0.
(2)顺序赋初值

int a[3][3] = {1,2,3,4,5,6,7,8,9};
    等价于
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

如果支队部分元素赋初值,要注意初值表中数据的书写顺序。例如

int b[3][3] = {1,2,3,0,0,0,4,5,0};
    等价于
int b[3][3] = {{1,2,3},{},{4,5}};

由此可见,分行赋初值的方法直观,不易出错,是二维数组初始化最常用方法。

二维数组举例

#include<stdio.h>
int main()
{
    /*方阵转置*/
    int i,j,tmp;
    int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

    for(i = 0;i<3;i++)    //行列互换
    {
        for(j = 0;j<3;j++)
        {
            if(i<=j)
            {
            tmp = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = tmp;
            }
        }
    }
    for(i = 0;i<3;i++)    //按矩阵形式输出a
    {
        for(j = 0;j<3;j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

运行结果

这里写图片描述


这里写图片描述

Java基础总结-数组

数组 1.格式(java中): 数据元素的类型  数组名 = new 数据元素的类型[数组元素的个数]  如: /*int s[]; s = new int[5];*/(不能写成int s[5]) 2...
  • xuzekun12138
  • xuzekun12138
  • 2017-08-13 15:12:13
  • 89

【DP动态规划】个人常用基础动态规划DP小总结【TODO】

一个方法,一个知识,除了其抽象性,人们经常还忽略了另一个重要的方面,直觉性。 形式化的抽象,保证了其严谨性,但是却少了很多直觉性。...
  • zhong123123123
  • zhong123123123
  • 2016-05-12 15:37:36
  • 332

PHP数组常用函数总结

1.数组的键/值操作函数array_values($arr); //获得数组的值 array_keys($arr); //获得数组的键名 array_flip($arr); //数组中的值与键名...
  • Jaystrong
  • Jaystrong
  • 2017-05-24 21:42:14
  • 239

Redis基础总结

转自:http://www.jb51.net/article/56448.htm 1.redis是什么 2.redis的作者何许人也 3.谁在使用redis 4.学会安装redis ...
  • basycia
  • basycia
  • 2016-08-10 20:20:39
  • 3024

java基础思维导图总结

  • 2016年03月05日 18:40
  • 15.08MB
  • 下载

前端基础总结

一、HTML和CSS部分 要点:对Web标准的理解、浏览器差异、CSS基本功:布局、盒子模型、选择器优先级及使用、HTML5、CSS3、移动端开发技术等 ps.这些内容之后再看都会变的比较基...
  • u013775952
  • u013775952
  • 2017-03-28 17:52:10
  • 1315

HTML5基础总结

HTML基础【为什么要学习HTML5?】 1. HTML5可以做出更迅速的反应 2. 开发成本更低(硬件和人力成本)缺点:1.不够原生态 2.加载速度慢 3....
  • KurryGo
  • KurryGo
  • 2016-12-05 17:02:05
  • 196

PHP基础知识总结(w3c)

刚开始学习PHP,以后大家多多指教: 学习后台是一个漫长的过程,刚学PHP,总结了一小部分,有人会问为什么把W3C的东西拷贝出来分享呢? 我的回答是:W3C都是一些入门基础,很有实在意义,...
  • u013808667
  • u013808667
  • 2016-06-14 11:30:51
  • 628

[Android基础]Android总结篇

Android公共技术:公共技术点之 Android 动画基础公共技术点之 Java 动态代理公共技术点之依赖注入公共技术点之 View 事件传递公共技术点之 View 绘制流程1.Android的F...
  • CodeEmperor
  • CodeEmperor
  • 2016-03-29 11:08:25
  • 19528

PHP基础知识点总结

1.php数组 var_dump()函数返回数组的数据类型和值 2.php对象 在 PHP 中,对象必须声明。 首先,你必须使用class关键字声明类对象。类是可以包...
  • u011053407
  • u011053407
  • 2015-11-17 17:49:43
  • 973
收藏助手
不良信息举报
您举报文章:数组基础总结
举报原因:
原因补充:

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