• 数组总结(一)


    数组是C语言和指针有着不清不楚的关系,涉及到指针那数组就变得有点邪恶了,来说下数组

    数组的定义

    类型 数组名[元素个数]
    例如
    int a[6] //整型储存元素为6的a数组,下面依次类推
    char b[24]
    double c[3]

    数组的初始化

    将数组中所有元素初始化为0,可以在这么写:
    int a[10]={0}//事实上这里只是讲第一个元素赋值为0,未赋值的会自动化赋值为0
    如果是赋予不同的值,那么用逗号分隔开即可
    int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    你还可以只给一部分元素赋值,未被赋值的元素自动初始化为0
    int a[10]={1, 2, 3, 4, 5, 6};//表示为前面6个元素赋值,后面4个元素系统自动初始化为0
    有时候还可以偷懒,可以只给出各个元素的值,而不指定数组的长度(因为编译器会根据值的个数自动判断数组的长度):
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0,};
    C99

    增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定元素进行初始化赋值,而未被赋值的元素自动化初始为0:
    int a[10] = {[3] = 3, [5] = 5, [8] = 8};

    访问数组中的元素

    数组名[下标]
    列:a[0];//访问a数组中的第一个元素
    b[1];//访问b数组中的第二个元素
    c[5];//访问c数组中的第六个元素
    注意:
    int a[5];//创建一个具有五个元素的数组
    a [0];//访问第一个元素的下标是0,不是1
    a [5];//报错,因为第五个元素的下标是a[4]

    循环跟数组的关系

    这是因为我们常常需要使用循环来访问数组:

      for (i = 0; i < 10 ;i ++)
      {
           a[i] = i;
    }```
    ###字符数组
    字符串常量
    字符数组:
     ```C  int main
           {
                  //初始化字符串数组的每个元素
                 char str1[10] = {'F', 'I', 'S', 'H', 'C', ''};
                 //可以不写元素的个数,因为编译器会自动计算
                 char str3[] = {'F', 'I', 'S', 'H', 'C', ''};
                 //使用字符串常量初始化字符数组
                 char str4[] = {"Fishc"};   
               //使用字符串常量初始化,可以省略大括号
                 char str5[] = "Fishc";
    }```
    #二维数组
    ###二维数组的定义
    类型 数组名[常量表达式][常量表达式]
     int a[6][6]; //6*6,6行6列
     char b[4][5]; //4*5,4行5列
     double c[6][3]; //6*3,6行3列
    ###二维数组的访问
    数组名[下标][下标]
     a[0][0]; //访问a数组中第1行第1列的元素
     b[1][3]; //访问b数组中第2行第4列的元素
    
    同样需要注意下标的取值范围,以防止数组的越界访问。
    比如int a[3][4],其“行下标”的取值范围是0~2,“列下标”的取值范围是0~3,超出任何一个下标的访问都是越界访问。
    ###二维数组的初始化
    由于二位数组在内存中是线性存放的·,因此可以将所有的数据写在一个花括号内:
     int a[3][4] = {1, 2., 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,};
    为了更直观地表示元素的分布,可以用大括号将每一行的元素括起来:
     int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    或者
    int a[3][4] = {
         {1, 2, 3, 4}
         {5, 6, 7, 8}
         {9, 10, 11, 12}
    };
    二维数组也可以仅对部分元素赋初值;
    int a[3][4] = {{1}, {5}, {9}};
    如果希望整个二维数组初始化为0,那么直接在大括号里写一个0即可;
    int a[3][4] = {0};
    C99同样增加了一种新特性:指定初始化的元素。这样就可以只对数组中的某些指定地元素进行初始化赋值,而未被赋值的元素自动化初始化为0;
    int a[3][4] = {[0][0] = 1, [1][1] = 2, [2][2] = 3};
    数组第一个元素就是数组的地址,而指针要的就是地址,他们的关系就变得复杂起来了
  • 相关阅读:
    你写的单例真的安全吗?
    CountDownLatch&&CyclicBarrier
    初步认识AQS
    Atomic底层原理
    volatile关键字
    Linux常用服务类相关命令
    线程池
    由浅入深TheradLocal
    synchronized关键字
    .net 中dapper实现事务的三种方式总结
  • 原文地址:https://www.cnblogs.com/xiao--liang/p/10289750.html
Copyright © 2020-2023  润新知