• 数组基础知识


    总结一下数组和指针的知识,分析一下它们之间的关系

    好像是一点关系也没有,指针就是指针,数组就是数组。认为有关系的大都是写C语言书的作者强行把它们两者放到一起写吧,如果分开写,嗯,估计大家学起来可能会分的更清楚写吧,作为小白的我是这么认为的。
    指针,在32位系统下面,指针变量都是占据4字节内存大小,指针里面存放的是一个内存的地址。
    数组,大小等于元素的类型乘以元素个数。定义数组时候必须指定它的元素类型和个数,元素可以是任意类型包括指针,但是不能是函数。
    一.数组基本知识:
    1.一维数组
    初始化
    (1) int array[8] = {1, 2, 3, 4, 5, 6, 7, 8};
    使用花括号括起来的一系列数值来初始化数组,数值之间用逗号隔开。
    (2)int array[4] = {1, 2};
    只初始化部分数组元素的话,未初始化的元素被设置为0,array[2]和array[3]为0
    (3)char ch[8] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
    初始化字符数组,如果改成char ch[9] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', ''};则表示一个字符串数组(字符和字符串区别是后面有没有'')
    (4)初始化数组时候可以省略中括号的元素个数,让编译器来决定数组的大小,例如:
    int array[] = {1, 2, 3, 4, 5, 6, 7, 8};编译器会自行确定数组大小
    (5)指定某个特定的元素进行初始化,例如:
    int array[6] = {[3] = 111};意思是把array[3]初始化为111.
    特殊:int array[10] = {1, 2, 3, 4, [5] = 10, 11, 12, [1] = 90};则初始化的结果是array[10] = {1, 90, 3, 4, 0, 10, 11, 12, 0, 0};
    (6)使用循环对数组赋值,常见的模板如下:
    for(index = 0; index < SIZE; index++)
    {
      array[index] = index;
    }
    无效或者错误的数组赋值方式:C语言不支持把数组作为一个整体来赋值,除了初始化的时候外,C语言也不支持用花括号括起来的列表形式进行赋值。
    #define SIZE 5
    int main(int argc, char* argv[])
    {
      int array_1[SIZE] = {1, 2, 3, 4, 5};
      int array_2[SIZE];
     
      array_2 = array_1;//这种赋值方式是错误的
      array_2[SIZE] = array_1[SIZE];//错误
      array_2[SIZE] = {1, 2, 3, 4};//错误
     
      return 0;
    }
    (7)编译器不会自动检查数组边界是否合法,使用超出数组边界值的索引会改变其他变量的数值,不同的编译器,输出结果会有一点差异。
    2.多维数组
    (1)二维数组的声明
    int array[5][10];代表的含义是,array是一个包含5个元素的数组,每个元素的类型是int[10];也就是说,rain具有5个元素,并且每个元素都是包含10个int数值的数组。因此,总结有如下知识点:
    array的首元素是array[0], array[0]是一个包含10个int数值的数组,同理array[1]和array[2],因为array[0]是数组,因此它的第一个元素是array[0][0], 第二个元素是array[0][1],其他元素以此类推。
    概括来说,array是包含5各元素的数组(每个元素又是包含10个int元素的数组),array[0]是包含10个int类型的元素的数组.
    (2)初始化二维数组
    array[2][5] = {{.....}, {.....}};也可以去掉里面的大括号,二维数组的初始化同样遵循一维数组的规则。
    二.数组和指针(待续....)
  • 相关阅读:
    Sequelize框架:
    sequelize 测试
    sequelize 用于PostgreSQL,MySQL,SQLite和MSSQL的Node.js / io.js ORM
    node Util 模块
    bluebird的安装配置
    bluebird 开发文档链接
    Node.js的__dirname,__filename,process.cwd(),./的含义
    editplus
    luogu3377 【模板】左偏树(可并堆)
    cf936c Lock Puzzle
  • 原文地址:https://www.cnblogs.com/timemachine213/p/8325578.html
Copyright © 2020-2023  润新知