C 定义新数据类型时,数组类型的元素类型不完整
我有以下代码:C 定义新数据类型时,数组类型的元素类型不完整,c,c89,C,C89,我有以下代码: #include <stdio.h> int main(void) { typedef int new_type[]; new_type Number[8]; return 0; } #包括 内部主(空){ typedef int new_type[]; 新的_类型编号[8]; 返回0; } 编译器(Gcc-4.9.2)显示错误:数组类型的元素类型不完整 我有一些问题: 1.C90标准是否接受通过typedef定义的新类型?在这种情况下,
#include <stdio.h>
int main(void) {
typedef int new_type[];
new_type Number[8];
return 0;
}
#包括
内部主(空){
typedef int new_type[];
新的_类型编号[8];
返回0;
}
编译器(Gcc-4.9.2)显示错误:数组类型的元素类型不完整我有一些问题:
1.C90标准是否接受通过typedef定义的新类型?在这种情况下,
new\u type
是一种数据类型,它定义了未定义元素数的数组或指向int
数组的指针
2.如果我们保持行typedef int new_type[]
,如何定义类型为新类型的变量?
谢谢你的帮助
C90标准是否接受通过typedef定义的新类型?在本例中,new_type是一种数据类型,它定义了一个未定义元素数的数组或一个指向int?数组的指针
typedef本身不是问题,因为您可以定义不完整的类型(typedef struct a_;s;
)。而且新的
类型确实和你想象的差不多
如果我们保持行typedef int new_type[]代码>,如何定义新类型的变量
对于变量定义,变量的类型必须是完整类型,因此:
typedef int new_type[];
new_type Number = { 1, 2, 3 };
将导致Number
成为大小为3的int
数组。但是,您尝试将数字定义为大小为8的int[]
数组(int Number[8][];
)
但未指定大小的数组不能用于定义任何变量、数组或作为structure1的成员(不完整的类型不能用于这些目的)
1.除非是最后一个,否则允许使用灵活的数组成员(对其有许多限制)。
C90标准是否接受通过typedef定义的新类型?在本例中,new_type是一种数据类型,它定义了一个未定义元素数的数组或一个指向int?数组的指针
typedef本身不是问题,因为您可以定义不完整的类型(typedef struct a_;s;
)。而且新的
类型确实和你想象的差不多
如果我们保持行typedef int new_type[]代码>,如何定义新类型的变量
对于变量定义,变量的类型必须是完整类型,因此:
typedef int new_type[];
new_type Number = { 1, 2, 3 };
将导致Number
成为大小为3的int
数组。但是,您尝试将数字定义为大小为8的int[]
数组(int Number[8][];
)
但未指定大小的数组不能用于定义任何变量、数组或作为structure1的成员(不完整的类型不能用于这些目的)
1.除非是最后一个,否则允许使用灵活的数组成员(对其有许多限制)。
数字应该有多大?它有8个元素,但元素是大小不确定的数组。无法分配。注意:typedef
在本地范围内不是很有用,而且大小不确定的数组-typedef
的用途非常可疑。为什么不使用typedef int my\u int;my_int a[8]代码>?(在文件范围内有typedef
)Number
应该有多大?它有8个元素,但元素是大小不确定的数组。无法分配。注意:typedef
在本地范围内不是很有用,而且大小不确定的数组-typedef
的用途非常可疑。为什么不使用typedef int my\u int;my_int a[8]代码>?(在文件范围中有typedef
),但如果我将其更改为new_type Number={0}代码>它构建成功,但编译器如何知道“Number”的实际大小?@TonyJ-因为您提供了数组初始值设定项({0}
)。它有1个元素(0
),因此大小可以推断为1。但是如果我将其更改为new_type Number={0}代码>它构建成功,但编译器如何知道“Number”的实际大小?@TonyJ-因为您提供了数组初始值设定项({0}
)。它有1个元素(0
),因此大小可以推断为1。