黑马程序员————C语言——数组

来源:互联网 发布:淘宝多少天可换货 编辑:程序博客网 时间:2024/06/03 12:17
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、数组的定义
       数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的。数组是有序数据的结合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下表来唯一地确定数组中的元素。例如一个班有10个学生,可以用S[1],S[2],S[3].........等代表10个学生的成绩,S是数组名,下标代表学生序号。

    1.定义

       类型说明符 数组名[常量表达式];

       int  s[10];

   2. 使用
   简单初始化:int s[5] = {19, 19, 20, 21, 25};
   元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始
   数组元素的访问:a[i]

    3.初始化
       1>初始化方式
 

      int a[3] = {10, 9, 6};    int a[3] = {10,9};    int a[] = {11, 7, 6};    int a[4] = {[1]=11,[0] = 7};


    2>常见错误
       

     int a[];//没有明确数组大小     int[4] a;//写法错误     int a[b];//必须是明确的数组大小    a = {10, 11};//没有数据类型    a[4] = {10,9,8,5};

二、数组的实例

#include <stdio.h>int main(){    // 使用注意    // 都是正确写法    //int ages[5] = {10 , 11, 12, 67, 56};    //int ages[5] = {10, 11};    //int ages[5] = {[3] = 10, [4] = 11};    //int ages[] = {10, 11, 14};        // 错误写法    // int ages[];        // 错误写法    /* 只能在定义数组的同时进行初始化    int ages[5];    ages = {10, 11, 12, 14};    */        // 正确写法    // int ages['A'-50] = {10, 11, 12, 14, 16};    //int size = sizeof(ages);    //printf("%d\n", size);        // 正确写法    /*    int count = 5;    int ages[count];    ages[0] = 10;    ages[1] = 11;    ages[2] = 18;    */        //printf();    // 错误写法    // 如果想再定义数组的同事进行初始化,数组元素个数必须是常量,或者不写    //int ages[count] = {10, 11, 12};            int ages[] = {10, 11, 12, 78};        // 计算数组元素的个数    int count = sizeof(ages)/sizeof(int);        for (int i = 0; i<count; i++)    {        printf("ages[%d]=%d\n", i, ages[i]);    }        return 0;}// 数组的基本使用void arrayUse(){    // 数组的定义格式: 类型 数组名[元素个数];    int ages[5] = {19, 29, 28, 27, 26};    // 19 19 28 27 26]    ages[1] = 29;        /*     ages[0] = 19;     ages[1] = 19;     ages[2] = 28;     ages[3] = 27;     ages[4] = 26;     */        /*     遍历:按顺序查看数组的每一个元素     */    for (int i = 0; i<5; i++)    {        printf("ages[%d]=%d\n", i, ages[i]);    }}

三、数组与函数

       数组作为函数参数,可以省略元素个数。 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组

#include <stdio.h>void change(int array[])//改变数组元素值得函数{    //printf("array==%p\n", array);        array[0] = 100;}int main(){    int ages[6] = {10, 11, 10, 11, 10, 11};        printf("ages==%p\n", ages);//输出sge数组首元素地址        change(ages);        printf("%d\n", ages[0]);//输出改变后元素的值    return 0;}

四、二维数组

    1.定义
       二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。一个数组能表示一个班人的年龄,如果想表示很多班呢?什么是二维数组?int ages[3][10]; 三个班,每个班10个人,相当于3行10列,相当于装着3个一维数组。二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素。

      二维数组的表现形式:

      数组名[下标][下标]

    2.初始化

       1>分行给二维数组赋初值

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

       2>可以将所有数据写在一个花括号内,按数组的顺序对各元素赋初值

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

       3>可以对部分元素赋初值

           int  a[3][4] ={{1},{5},{9}};

           int a[3][4]={{1},{0,6},{0,0,11}};


       

五、二 维数组实例

/*将一个二维数组行和列的元素互换,存到另一个二维数组中*/#include <stdio.h>int main(){    int a[2][3] = {{1,2,3},{4,5,6}};    int b[3][2],i,j;    printf("array a:\n");    for(i=0;i <= 1;i++)    {        for(j = 0;j<= 2; j++)        {            printf("%5d",a[i][j]);//将二维数组输出来,每个字符间空5个            b[j][i] = a[i][j];//将二维数组行和列的元素互换        }        printf("\n");    }    printf("array b:\n");    for(i = 0;i <= 2;i++)    {        for(j=0;j <= 1;j++)        {           printf("%5d",b[i][j]);//将二维数组输出来,每个字符间空5个        }        printf("\n");    }    return 0;}




0 0
原创粉丝点击