C语言 不允许使用不完整的类型

我请教一下,C语言 不允许使用不完整的类型
最新回答
凉风有信

2024-12-01 00:12:00

C语言中,类型完整性的要求十分严格,尤其在处理数组时,不能接受不完整的类型定义。以下是几种合法的类型声明方式:



  • char **argv; 这表示一个指向字符型数组指针的指针,即可以指向一个包含字符指针的数组。

  • char (*argv)[]; 这等价于上述形式,定义了一个指向字符数组的指针。

  • char *argv[2]; 这声明了一个包含两个字符指针的数组。


然而,你可能会尝试这样定义:char *(argv[]); 这种写法实际上定义的是一个指向数组的指针,但是数组长度没有指定,这就导致了问题。由于数组长度是动态的,编译器无法确定每个指针元素的大小,因此它认为这种结构的定义是不完整的,无法编译通过。


总的来说,C语言要求对数组类型进行明确和完整的定义,包括数组的元素类型和大小,以便编译器能够正确计算内存分配和处理。如果缺少这些信息,程序将无法正确编译,这也是C语言对类型安全性的体现。