欢迎您访问52IJ教育培训网,今天小编为你分享的语文方面的学习知识是通过网络精心收集整理的:“typedefstruct_typedef struct S{int g;char h;}T;则下列叙述正确的...[语文]”,注意:所整理内容不代表本站观点,如你有补充或疑问请在正文下方的评论处发表。下面是详细内容。
正确的是B,请查看谭浩强C语言第二版 294页关于 typedef 说明.
Typedef struct S
{
int g;
char h;
}T;
typedef 声明新的类型名,也就是定义一个新的数据类型.如果你看除去 typedef ,T就变成了声明一个结构体类型S:
struct S
{
int g;
char h;
};
加上typedef,T之后,这个T就等效于 struct S,是一个结构体类型.也就是说,typedef 只是将 struct S 另定义为一种新的数据类型T.
再看答案:
A 错误, S 不可以定义结构体变量,要加上 struct ,也就是 struct S + 结构体变量
B 正确, 因为T 等效于 struct S.
C 错误 S 不是变量,要和 struct 一起才有意义.
D 错误 T不是变量,是一种新的类型,等效于 struct S.
其他类似问题
问题1:请问这个结构体所占的空间大小是___字节.typedef struct { int a,char b,short c,short d,}AA_t;为什么?
一般编译器为 12 个字节.
因为 一般编译器 定义 int 为 4 字节,short 为 2字节, char 为 1字节,而且要考虑 内存分配 4 字节对齐.
int a; -- 需要 4 bytes
char b; -- 需要 1 byte
short c; -- 需要 2 bytes
short d; -- 需要 2 bytes.
分配 a 4 字节
分配 b c 4 字节 (浪费1字节 )
分配 d 4 字节 (浪费2字节 )
共用去 12 字节.
-----------
国内尚用的过时的编译器TC,定义 int 为 2 字节. 内存分配 2 字节对齐:
int a; -- 需要 2 bytes, 分配 2
char b; -- 需要 1 byte, 分配 2
short c; -- 需要 2 bytes, 分配 2
short d; -- 需要 2 bytes. 分配 2
共用去 8 字节.
问题2:关于typedef struct定义结构体时,为什么struct后面可以不加类型名例如这样子typedef struct { \x09QueuePtr front; \x09QueuePtr rear; }LinkQueue;这样写是对的?[数学科目]
这就是typedef 的作用
当有typedef 时
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
则LinkQueue 变是类型号名
下面声明变量就可以
LinkQueue a
如没有typedef 时
如Struct LinkQueue{
QueuePtr front;
QueuePtr rear;
}
则声明变量时就必须这样
Struct LinkQueue a
所以
typedef struct定义结构体时,后面可以不加类型名了
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
