在C语言中,如果我们有:
typedef int a[100]; typedef int b[200];
那么类型a和b是等价的吗?
据我所知,C使用名称等价,
但我很困惑.
解决方法
在您的示例中,a是int [100]类型的别名,b是int [200]类型的别名.这两种类型不相同,因为数组的大小是其类型的一部分,不同的大小意味着不同的类型.
如果第二行是typedef int b [100] ;,则a和b是等价的.
As far as i know C uses name equivalence
结构和联合在名义上是键入的,如果你有两个标记为A和B的结构(或联合)类型,它们具有完全相同的主体,它们仍然被认为是不同的类型.因此,如果变量具有类型struct A,则无法在不首先转换结构B的情况下为其分配结构B.
对于typedef来说,情况并非如此,因为它只是别名.所以如果你有两个typedef typedef X a; typedef X b ;,那么X,a和b都是无法区分的.