黑马程序员—数组及二维数组

来源:互联网 发布:kevin macleod 知乎 编辑:程序博客网 时间:2024/05/01 03:17

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、数组

1、数组的定义:

       数组为构造类型:是由无数个基本数据类型组成的;用来存储一组数据。 

       声明数组的类型;

       声明数组的元素个数(需要多少存储空间)

2、数组的特点:

       只能存放一种类型的数据,比如int类型的数组,float类型的数组;

       里面存放的数据称为“元素”。

3、数组的格式:

       元素类型  数组名[元素个数];例如:int ages[ 3 ] ;

4、数组的简单使用:

      简单初始化:int ages[ 5 ] = {13,34,56,35,57,78};

      元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始;

      数组元素的访问:a[ i ] ;

5、数组的初始化:

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

       int  a[ 3 ] = {2,3};

       int  a[ ] = {34,56,12};

       int  a[ 4 ] = {[1] = 34,[0] = 4};

#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]);    }}


6、数组的内存分析:

       数组存储空间的划分(内存的分配是由高地址到低地址进行的,但一个数组内部元素又是从低到高进行的);

       数组名的作用,查看元素地址;相当于数组名就是数组的地址;

#include <stdio.h>/* 提示用户输入5个学生的成绩,算出平均分并且输出 */int main(){    // 1.定义一个数组来存储成绩    int scores[5];        // 2.提示输入成绩    // 用来存储总分    int sum = 0;    for (int i = 0; i<5; i++) {        // 2.1 提示输入某个学生的成绩        printf("请输入第%d个学生的成绩:\n", i + 1);        // 2.2 存储当前学生的成绩        scanf("%d", &scores[i]);        // 2.3 累加成绩        sum += scores[i];    }        // 3.计算平均分,并且输出    printf("平均分是%f\n", sum/5.0);    return 0;}


7、数组的其他使用:

       数组与函数参数

       数组元素作为函数参数

       数组作为函数参数(sizeof注意)

#include <stdio.h>// 数组作为函数参数,可以省略元素个数// 数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组void change(int array[]){    //printf("array==%p\n", array);        array[0] = 100;}void change2(int n){    n = 100;}int main(){    int ages[6] = {10, 11, 10, 11, 10, 11};        //printf("ages==%p\n", ages);        change(ages);        //change2(ages[0]);        printf("%d\n", ages[0]);    return 0;}

       遍历数组元素

       两种遍历方式(while循环和for循环)

       遍历元素值和元素地址

       字符数组的使用

二、二维数组

1、C语言提供了类似与矩阵的多维数组。

     三个班,每个班10人:int ages[3][10];

2、初始化

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

     int[3][4] = {{},{},{}};

     数组元素简单访问;

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


#include <stdio.h>int main(){        int ages[5] = {10, 11, 90, 89, 70};        int ages2[3][5]= {        {10, 11, 90, 89, 70},                {10, 11, 90, 89, 70},                {10, 11, 90, 89, 70}    };       return 0;}


------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

0 0