C语言中不完全类型和对象类型的定义是什么?

C语言中不完全类型和对象类型的定义是什么?,c,c99,object-type,C,C99,Object Type,在C中,不完整类型和对象类型的定义是什么?另外,你能提供一些例子吗 ANSI C99在不同的地方提到了这两种类型,尽管我发现很难理解它们的确切含义(没有明确定义它们是什么的段落/句子)。我知道的类型有: 不完全类型 对象类型 功能类型 下面是一个示例(也在代码板上:) #包括 内部主(空){ int i; 结构不完整*p1; int*p2; int(*p3)(无效); p1=NULL;/*p1是指向不完整类型的指针*/ p2=&i;/*p2是指向对象的指针*/ p3=main;/*p3是指向

在C中,不完整类型对象类型的定义是什么?另外,你能提供一些例子吗


ANSI C99在不同的地方提到了这两种类型,尽管我发现很难理解它们的确切含义(没有明确定义它们是什么的段落/句子)。

我知道的类型有:

  • 不完全类型
  • 对象类型
  • 功能类型
下面是一个示例(也在代码板上:)

#包括
内部主(空){
int i;
结构不完整*p1;
int*p2;
int(*p3)(无效);
p1=NULL;/*p1是指向不完整类型的指针*/
p2=&i;/*p2是指向对象的指针*/
p3=main;/*p3是指向函数的指针*/
返回0;
}
struct complete
可以在另一个翻译单元中定义(具有一定的大小)。这个翻译单元只需要指针,我们转到:

6.2.5类型

1存储在对象中或由函数返回的值的含义由 用于访问它的表达式的类型。(声明为对象的标识符是最简单的此类表达式;类型在标识符声明中指定。)类型分为对象类型(完全描述对象的类型)、函数类型(描述函数的类型)和不完整类型(描述对象但缺少确定其大小所需信息的类型)。 不完整类型的示例:

struct f *foo;
typedef struct f Ftype;
不能创建不完整类型的实例,但可以从不完整类型创建指针和typedef名称:

struct f *foo;
typedef struct f Ftype;
要将不完整的结构类型转换为对象类型,我们必须定义结构:

struct f
{
  int x;
  char *y;
};

C99使用引用类型?真的吗?(如果您有C99规范,6.2.5将深入讨论C类型系统;它从三个顶级类型类别的定义开始:对象类型、函数类型和不完整类型)我的错误是,没有。我将从问题中删除它。谢谢你的回答!这正是我所指的部分,但没有在我的问题中发布。;)6.2.5提到了那些顶级类别,但似乎从来没有在其中提到“什么”。函数类型很容易理解,但我仍然对不完整类型和对象类型之间的区别感到困惑。对于不完整类型,“描述对象但缺少确定其大小所需信息的类型”-缺少确定其大小所需信息的示例是什么?
struct f
{
  int x;
  char *y;
};