c类型等价的编译器

DIM*_*IOS 6 c

在C语言中,如果我们有:

typedef int a[100];
typedef int b[200];
Run Code Online (Sandbox Code Playgroud)

那么类型a和b是等价的吗?据我所知,C使用名称等价,但我很困惑.

sep*_*p2k 9

在您的示例中a是类型的别名,int[100]并且b是该类型的别名int[200].这两种类型不相同,因为数组的大小是其类型的一部分,不同的大小意味着不同的类型.

如果第二行是typedef int b[100];,a并且b相当于.

据我所知,C使用名称等价

结构和联合在名义上是键入的,如果你有两个标记为A和B的结构(或联合)类型,它们具有完全相同的主体,它们仍然被认为是不同的类型.因此,如果变量具有类型struct A,则无法在struct B不先转换它的情况下分配它.

对于typedef仅仅是别名的s来说,情况并非如此.所以,如果你有两个类型定义typedef X a; typedef X b;,那么X,a并且b都是相互区分.