【发布时间】:2013-09-16 15:58:55
【问题描述】:
数组是 c 中的数据类型吗? 如果是,我们可以像在结构体中一样创建数组类型的变量,枚举。
int arr[10] ;//is this arr is a data type of 10 ints
【问题讨论】:
标签: c abstract-data-type
数组是 c 中的数据类型吗? 如果是,我们可以像在结构体中一样创建数组类型的变量,枚举。
int arr[10] ;//is this arr is a data type of 10 ints
【问题讨论】:
标签: c abstract-data-type
数组是C中的一种数据类型吗?
没有进一步说明的“数组”不是一个单独的数据类型,但是一旦你指定了它的大小和它的元素类型,它就变成了一个数据类型。换句话说,您不能定义一个采用“任何东西的数组”或“没有特定大小的特定类型的数组”的类型,但您可以定义一个数据类型,它是 N 类型的 @ 项目的数组987654322@.
如果可以,我们可以像
structs、enum那样创建数组类型的变量吗?
int arr[10] ;//is this arr is a data type of 10 ints
是的,是的。你可以通过检查sizeof(arr) 来判断:它将是sizeof(int) 的十倍。
【讨论】:
数组是derived type,如果我们查看C99 draft standard 部分6.2.5 Types 段落20 说(强调我的):
任何数量的派生类型都可以从对象、函数和 不完整的类型,如下:
— 数组类型描述了一组连续分配的非空对象 特定的成员对象类型,称为元素类型。36) 数组类型是 以它们的元素类型和数组中元素的数量为特征。一个 数组类型被认为是从它的元素类型派生的,如果它的元素类型是 T,那么 数组类型有时被称为“T 数组”。数组类型的构造从 元素类型称为“数组类型推导”。
您可以创建结构和枚举的数组,唯一的例外在脚注36中注明:
由于对象类型不包含不完整类型,因此无法构造不完整类型的数组。
【讨论】:
当然,一种数据类型的数组是另一种数据类型。
你可以这样做:
typedef int intarr3_t[3];
intarr3_t intarr = {1, 2, 3};
【讨论】:
是的,它是一种数据类型吗?是的,您可以制作多个。
为了更清楚,可以对数组进行typedef。
typedef char MyType_t [10];
将使 MyType_t 成为 10 个字符的数组:
MyType arrayOfTenChars;
【讨论】:
数组的概念与派生类型有关。然后还有array of int和array of 10 ints等data类型。
【讨论】: