zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )

地址语言数组 元素 数据类型 本质
2023-06-13 09:17:59 时间

文章目录

一、数据类型


" 数据类型 " 是 数据的抽象 ;

相同类型的数据 , 表示形式相同 , 存储格式相同 , 相关操作相同 ;

C 语言程序中的 数据 , 必定属于某种 数据类型 ;

数据类型分为 简单数据类型 和 复杂数据类型 ;

  • 简单数据类型 :
    • 基本数据类型 : C 语言中有
    6

    种基本数据类型 ;

    • 整型 : short , int ;
    • 浮点型 : float 单精度浮点 , double 双精度浮点 ;
    • 字符型 : char ;
    • 空类型 : void ;

    • 用户自定义类型 : enum 枚举类型
  • 复杂数据类型 :
    • 结构类型 :
      • 数组类型 : [] ;
      • 结构体类型 : struct ;
      • 联合体类型 : union ;
      • 类 : class ;
    • 指针类型 : * ;

二、数据类型本质 ( 数组地址 | 数组首元素地址 )


数据类型 本质 : 固定大小 内存块 的 别名 ;

如下代码 :

int a;

编译器 一旦看到 int 类型变量 , 就知道需要分配 4 字节内存 , 用于存储该变量 ;

int array[10];

告诉 C 语言编译器 分配 40 直接内存 ;

打印上述数组 array , array + 1 , &array , &array + 1 的值 ,

#include <stdio.h>

int main()
{
    int array[10];

    printf("array = %d, array + 1 = %d, &array = %d, &array + 1 = %d",
           array,
           array + 1,
           &array,
           &array + 1);

    return 0;
}

执行结果 :

array = 6422184, array + 1 = 6422188, &array = 6422184, &array + 1 = 6422224

发现 array&array 的值相等 , 但是这二者所代表的数据类型不同 ;

  • array 代表 数组首元素地址 ;
  • &array 代表 数组地址 ;

array + 1&array + 1 的值相差

40

字节 , 也就是整个数组的大小 ;

  • array + 1 表示 数组首元素地址 加上一个 数组元素 占据的内存大小 ;
  • &array + 1 表示 数组地址 加上一整个 数组 占据的内存大小 ;

数组数据类型 :

  • 定义 数组类型
  • 定义 数组指针类型
  • 数组类型 和 数组指针类型 的关系 :