zoukankan      html  css  js  c++  java
  • 初始C语言中的数组(男神翁凯老师MOOC)

    定义数组

    ●<类型>变量名称[元素数量];

    ● int grades[100];

    ●double weight[20];

    ●元素数量必须是整数

    ●C99之前:元素数量必须是编译时刻确定的字面量

    ●是一种容器(放东西的东西)

    ●其中所有的元素具有相同的数据类型;

    ●一旦创建,不能改变大小

    ●*(数组中的元素在内存中是连续依次排列的)

    ●可以出现在赋值的左边和右边

     数组的单元

    ●数组的每个单元即使数组类型的一个变量

    ●使用数组时放在[]中的数字叫做下标或索引,下标从0开始计数(下标从0开始计数时C语言开始,为了方便编译器)

    有效的下标范围

    编译器对运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写

    ●一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃

    segmentation fault

    ●但是也可能运气好,没造成严重的后果

    ●所以这是程序员的责任来保证程序只使用有效的下标值:[0,数组的大小—1]

    数组的集成初始化

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

    ●直接用大括号给出数组的所有元素的初始值

    ●不需要给出数组的大小,编译器替你数数

    集成初始化时的定位(C99 Only)

    int a[10]={
    [0]=2,[2]=3,6,
    };      //a[3]=6  

    ●用[n]在初始化数据中给出定位

    ●没有定位的数据接在前面的位置后面

    ●其他位置的值补零

    ●也可以不给出数组的大小,让编译器算

    ●特别适合初始数组稀疏的数组

    数组的大小

    ●sizeof 给出整个数组所占据内容的大小,单位是字节

                          sizeof(a)/sizeof(a[0])

    ●sizeof(a[0])给出数组中单个元素的大小

    ●这样的代码,一旦修改数组中的初始数据,不需要修改遍历的代码

    数组的赋值

    int a[]={1,2,3,4,5};
    int b[]=a;//错误写法

    ●数组变量本身不能被赋值

    ●要把一个数组所有的元素交给另一个数组,必须采用遍历

    for(i=0;i<length;i++){
    b[i]=a[i];
    }

    数组的遍历

    通常都是使用for循环,让循环变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标

    常见错误是:

    ●循环结束条件是<=数组长度,或

    ●离开循环后,继续用 i 的值来做数组元素的下标!

    数组作为函数参数时,往往必须再用另一个参数来传入数组的大小

    数组作为函数的参数时:

    ●不能在[]中给出数组的大小

    ●不能再利用sizeof来计算数组的元素个数!

    二维数组

    int a[3][5]

    ●通常理解为a是一个3行5列的矩阵

    二维数组的遍历 

    for(i=0;i<3;i++){
        for(j=0;j<5;j++){
                a[i][j]=i*j;
        }
    }

    ●a[a,j] 表示的是a[j]  (逗号表达式)

    二维数组的初始化

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

    ●列数是必须给出的,行数可以由编译器来数

    ●每行一个{},逗号分隔

    ●最后的逗号可以存在,有古老的传统

    ●如果省略,表示补零

    ●也可以用定位(C99 ONLY)

  • 相关阅读:
    常用排序算法及java语言实现
    机器学习实战笔记(python3实现)01--概述
    笔试错题--(字符串常量池和JVM运行时数据区)
    笔试错题(典型题)
    java进阶--java网络编程
    01_Java基础_第1天(Java概述、环境变量、注释、关键字、标识符、常量)
    数据库3(DBUtils)
    数据库2(JDBC、DBUtils)
    数据库1(数据库、表及表数据、SQL语句)
    Linux的基本命令
  • 原文地址:https://www.cnblogs.com/zhuxuan1997/p/9391365.html
Copyright © 2011-2022 走看看