我知道C中的基本数据类型 - char、int、float 等。但是C语言中的派生数据类型到底是什么?
5 回答
标准的 6.2.5.20 (好吧,草案;万岁免费 :)涵盖派生类型:
20 可以从对象、函数和不完整类型构造任意数量的派生类型,如下所示:
-- 数组类型描述了具有特定成员对象类型的一组连续分配的非空对象,称为元素类型。数组类型的特征在于它们的元素类型和数组中的元素数量。数组类型被称为从其元素类型派生,如果其元素类型是T
,则该数组类型有时称为数组T
。从元素类型构造数组类型称为数组类型派生。
-- 结构类型描述了一个顺序分配的非空成员对象集(在某些情况下,一个不完整的数组),每个对象都有一个可选的指定名称和可能的不同类型。
-- 联合类型描述了一组重叠的非空成员对象,每个成员对象都有一个可选的指定名称和可能的不同类型。
-- 函数类型描述具有指定返回类型的函数。函数类型的特征在于它的返回类型以及它的参数的数量和类型。一个函数类型被称为是从它的返回类型派生的,如果它的返回类型是T
,这个函数类型有时被称为函数返回T
. 从返回类型构造函数类型称为函数类型派生。
-- 指针类型可以派生自函数类型、对象类型或不完整类型,称为引用类型。指针类型描述了一个对象,其值提供对被引用类型实体的引用。从引用类型派生的指针类型T
有时称为指向 的指针T
。从引用类型构造指针类型称为指针类型派生。这些构造派生类型的方法可以递归地应用。
从基本数据类型派生的数据类型称为派生数据类型。派生数据类型不会创建新的数据类型,而是向基本数据类型添加一些功能。
在 C 中,两种派生数据类型是:数组和指针。
数组:数组是相同类型变量的集合。它们存储在传染性内存分配中。
例如
int a[10];
char chi [20];
指针:
指针是一个特殊变量,它保存另一个变量的内存地址(内存中的位置)。
int i=10;
int *j;
j=&i;
这里,j 是一个整数指针,因为它保存了一个整数变量 i 的地址。
派生数据类型只不过是从基本数据类型构造而来。例如指针、结构、联合等。 int i; 整数*指针;指针 = &i; 'i' 是整数类型的变量,它是基本数据类型。这就是为什么指针必须是基于数据类型的原因。
派生数据类型是一种复杂的分类,可识别一种或多种数据类型,由称为原始数据类型的简单数据类型组成。派生数据类型具有高级属性和用途,远远超出作为其基本构建块操作的基本原始数据类型。
派生数据类型派生自基本数据类型(即:int、float、char、double、void)。他们不会创建新的数据类型,而是使用基本数据类型来添加额外的功能。例如:数组:数组是相同类型的变量的集合。因此数组是派生的数据类型。