B,C的区别在哪呢,只知道A,B是对的,为什么C的TT可以写在结构体变量名的位置,题目不是说结构体变量名为st吗

B,C的区别在哪呢,只知道A,B是对的,为什么C的TT可以写在结构体变量名的位置,题目不是说结构体变量名为st吗

问题描述:

img

  A) struct ( char cs int a;  st;
 B) struct ( char c; int a;TT;
         struct TTst
 C) typedef struct { char c; int a;TT;
        TTst;
D)#define TT struct
        TT{char c;inta;
                                                             St

1)B是错的
2)C用了typedef,就是用户可以定义自己的类型,定义后就可以想基本类型一样的方法使用,所以C可以 TT st,不需要在前面加struct了
3)结构完整定义struct TT{ xxx, yyy};这里的TT可省掉,就变成了匿名结构体,匿名结构体就必须直接定义变量了,否则后面没法用(没有名字,所以没法用),就是A的用法
4)自定义类型结构体定义 typedef struct TT{ xxx,yyy}TT; 这样定义后TT就变成了一个类型,可以直接定义变量了(当然还可以用 struct __TT__来定义变量)。这里的__TT__可以省略,就是C的用法。用了typedef后TT所在位置就不是变量了,而把它声明成了一个类型

选项B,C都是先设计一个结构体类型,再定义结果体变量,
设计结构体是可以定义变量,如:struct 结构体名{ 。。。}结构体变量;
如果先设计结构体就是:struct{ ...}结构体名;

选项B,C 的区别;C用了自定义类型关键词typedef,这样定义结构体变量时,TT就表示struct TT
^o^如果有用,请采纳

如果我的回答对你有帮助,请点击旁边的采纳按钮,谢谢

BC的区别很小就是一个是
struct TT st
一个是
TT st

两个虽然只差一个结构体单词struct

但是就是一个正确一个错误的区别

因为你是刚刚定义结构体TT的

所以建立结构体类型变量时不可以加typedef

但是必须得加struct