C语言中结构的定义不带名称与带了名称有什么不同?

来源:百度知道 编辑:UC知道 时间:2024/05/13 01:36:17
比如:
typedef struct C
{
/*someting*/
};
typedef struct C
{
/*something*/
}SC;
typedef struct
{
/*someting8/
}SC;

这三个究竟有什么不同,最好可以举例说明一下?
以两位回答来看,第二个定义里面的SC是一个变量还是一个数据类型呢

1
如果给结构体命名,如
typedef struct ss
{
.....
};
则在函数中可以用这个名字来定义变量,如
void main()
{
ss s1;
......
}

2
也可以在定义结构体时定义变量,如
typedef struct ss
{
......
}s1;

3
如果只需要定义一次,就可以没有结构体名而直接定义变量,如:
typedef struct
{
......
}s1;

三种方法没有太大的区别

补充回答:C为数据类型,SC是变量

个人认为没什么多大的不同,我也关注中.希望有高手说一下.其实typedef是自定义类型,像第一个的typedef有点多余的意思,因为后面的都没有说出自己的自定义是什么类型,
第二就是最常见的了,以后你写这个结构体的时候就可以用SC来代表struct C,而不用每一次用到这个结构体时都写成struct C /*名*/
第三个我也有点看不懂,望有人能解决,个人认为第三个和第二个没有区别.