您的当前位置:首页正文

常用数据类型(一)

来源:华拓网

数组


  • 概念:用来存储具有 相同类型 的多个元素
  • 定义
    // 格式:元素类型 数组名[元素个数]
    
    1. 先定义再完全初始化
       int ages[5];
       ages[0] = 18;
       ages[1] = 18;
       ages[2] = 18;
       ages[3] = 18;
       ages[4] = 18;
    
    2. 定义同时不完全初始化
       int ages[5] = {18, 18, 18};
    
    3. 定义同时完全初始化
       float heights[5] = {1.99f, 1.99f, 1.99f, 1.99f, 1.99f};
    
    注意:
    (1) 如果先定义再 不完全 初始化,那么部分元素可能是一段 垃圾数据
        int ages[5];
        ages[0] = 18;
        ages[1] = 18;
        printf("0 = %i\n", ages[0]);
        printf("1 = %i\n", ages[1]);
        printf("2 = %i\n", ages[2]);
        printf("3 = %i\n", ages[3]);
        printf("4 = %i\n", ages[4]);
    
    (2) 如果定义同时 不完全 初始化, 那么 没有被初始化 的元素,默认是 0
        int ages[5] = {18, 18, 18};
        printf("0 = %i\n", ages[0]);
        printf("1 = %i\n", ages[1]);
        printf("2 = %i\n", ages[2]);
        printf("3 = %i\n", ages[3]);
        printf("4 = %i\n", ages[4]);
    
    (3) 如果定义同时完全初始化,那么元素的个数可以 省略
        int ages[] = {18, 18};
        printf("0 = %i\n", ages[0]);
        printf("1 = %i\n", ages[1]);
    
    (4) 可以通过 [索引] = 方式,给 指定索引 元素赋值
        int ages[101] = {[66] = 18, [88] = 18};
        printf("0 = %i\n", ages[0]);
        printf("66 = %i\n", ages[66]);
        printf("88 = %i\n", ages[88]);
    
    (5) 不建议 使用 变量 作为 元素个数
    
    (6) 只能定义 同时 使用 {} 进行初始化,若先定义那么就不能使用 {}
    
  • 操作
    • 获取单个元素
      // items[index]:通过 下标 访问元素
      int ages[] = {18, 18, 18};
      int a = ages[2];
      printf("2 = %i\n", a);
      
    • 遍历
      int ages[] = {18, 18, 18, 18, 18, 18};
      int length = sizeof(ages) / sizeof(ages[0]);
      for (int i = 0; i < length; i++) {
          printf("ages[%i] = %i\n", i, ages[i]);
      }
      
  • 内存分配
    • 地址:charValues == &charValues == &charValues[0]
    • 存储细节
      1. 系统给数组分配 一块连续 的 存储空间
      2. 数组名 代表数组的 首地址,从首地址位置,依次 存入元素
      3. 每个元素占用 相同 的 字节数
      4. 数组中元素之间的地址是 连续的
      
    • 越界:数据混乱程序崩溃
      char numbers[] = {3, 2};
      char values[] = {6, 6, 6};
      values[3] = 66;
      printf("nums[0] = %i\n", nums[0]);
      nums[-1] = 88;
      printf("values[2] = %i\n", values[2]);
      
      内存分配.png