C 和派生数据类型?

Posted

技术标签:

【中文标题】C 和派生数据类型?【英文标题】:C and derived data types? 【发布时间】:2011-08-26 21:31:19 【问题描述】:

我知道 C 中的基本数据类型 - char、int、float 等。但是 C 语言中的派生数据类型到底是什么?

【问题讨论】:

***.com/questions/660083/… 【参考方案1】:

6.2.5.20 of the standard (well, a draft; hooray free :) 涵盖派生类型

20 可以从对象、函数和 不完整的类型,如下: -- 数组类型描述了一个连续分配的非空对象集 特定的成员对象类型,称为元素类型。数组类型是 以它们的元素类型和数组中元素的数量为特征。一个 数组类型据说是从它的元素类型派生的,如果它的元素类型是T,则 数组类型有时称为T数组。数组类型的构造从 元素类型称为数组类型推导。 -- 结构类型描述了一个顺序分配的非空成员对象集 (并且,在某些情况下,一个不完整的数组),每个都有一个可选的 指定的名称和可能的不同类型。 -- 联合类型描述了一组重叠的非空成员对象,每个成员对象 它有一个可选的指定名称和可能不同的类型。 -- 函数类型描述具有指定返回类型的函数。函数类型是 以它的返回类型和它的参数的数量和类型为特征。一种 函数类型据说是从它的返回类型派生的,如果它的返回类型是 T ,则 函数类型有时称为函数返回T。建设一个 返回类型的函数类型称为函数类型派生。 -- 指针类型可以派生自函数类型、对象类型或不完整的 类型,称为引用类型。指针类型描述了一个对象,其值 提供对被引用类型的实体的引用。派生自的指针类型 引用类型T 有时称为指向T的指针。建设一个 来自引用类型的指针类型称为指针类型派生

这些构造派生类型的方法可以递归应用。

【讨论】:

【参考方案2】:

从基本数据类型派生的数据类型称为派生数据类型。派生数据类型不会创建新的数据类型,而是向基本数据类型添加一些功能。

在 C 中,两种派生数据类型是:数组和指针。

数组:数组是相同类型变量的集合。它们存储在传染性内存分配中。

例如

int a[10];
char chi [20]; 

指针:

指针是一个特殊变量,它保存另一个变量的内存地址(内存中的位置)。

int i=10;
int *j;
j=&i;

这里,j 是一个整数指针,因为它保存了一个整数变量 i 的地址。

【讨论】:

@roadrunner:我不认为那是海报所指的。 @Mitch Wheat:不要误会我的意思。但是 [我知道 C 中的基本数据类型 - char、int、float 等。但是 C 语言中的派生数据类型到底是什么?] .... 这意味着什么?他想了解 C 中可用的派生数据类型。 @Mitch Wheat:等到!让 OP 说出他到底想要什么。 @roadrunner:看到这个:***.com/questions/660083/… @Mitch :是的,我已经看到该链接,发布在问题的 cmets 秒中。但是,他会这么说吗?再说一次,让我们等到 OP 说话。很多混乱! :|【参考方案3】:

派生数据类型不过是由基本数据类型构造而成。 例如指针、结构、联合等。 诠释我;整数*指针;指针 = &i; 'i' 是整数类型的变量,它是基本数据类型。 这就是为什么指针必须是基于数据类型的原因。

【讨论】:

【参考方案4】:

派生数据类型是一种复杂的分类,可识别一种或多种数据类型,由称为原始数据类型的简单数据类型组成。派生数据类型的高级属性和用途远远超出了作为其基本构建块运行的基本原始数据类型。

【讨论】:

【参考方案5】:

派生数据类型派生自基本数据类型(即:int、float、char、double、void)。他们不会创建新的数据类型,而是使用基本数据类型来添加额外的功能。例如:数组:数组是相同类型的变量的集合。因此数组是派生的数据类型。

【讨论】:

以上是关于C 和派生数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

C++将派生类赋值给基类(向上转型)

C语言 四种基本数据类型

c 中的数据类型

使用 MPI/OpenMP 的具有派生数据类型(嵌套类对象)容器的 C++ 程序

C 数据类型

C 数据类型