`

结构体前面加不加typedef有什么区别?

阅读更多

结构体前面加不加typedef有什么区别?

为什么c程序中定义结构时经常要用到typedef呢?如:
typedefstruct_am_win_menutext{
intidc
intmessage
}am_win_menutext
为什么不直接把结构名定义为am_win_menutext然后使用就可以了。
取个类型的别名有什么作用呢?
---------------------------------------------------------------
那是因为不取别名的话,每次定义都要加struct
---------------------------------------------------------------
直接把结构名定义为am_win_menutext然后使用
这样你在使用时必须这样
structam_win_menutextmyval
定义了别名之后就可以
am_win_menutextmyval
这样可以更清晰。
---------------------------------------------------------------
主要在c语言里这样使用使得更方便.
c++
就不用typedef也可以直接使用结构体名.

////////////////////////////////////////////////////////

c++中使用:

structtest
{
intxy
}
就可以定义一个名为test的结构体,但c中很可能编译通不过。c语言并不支持在struct后使用标示符定义结构体的名字,test将会被忽略,这相当于定义了一个没有名字的结构体。若定义一个该结构体对象testmt将会提示未定义的test错误信息。所以,在c语言中,一般使用typedef来定义结构体,上面的例子可以改为:

typedefstruct_test{
intxy
}test

_test要不要都可以。并且,第一个大括号不能像原来那样随便的换行写(因为是typedef)。

分享到:
评论

相关推荐

    C结构体声明[归类].pdf

    这种方式会导致编译错误,因为编译器在编译时不知道该结构体的长度。解决方法是使用指针来包含自身,例如: struct BOX { int length; int width; struct BOX *box1; }; 这样编译器在编译时就知道该结构体的长度了...

    c语言结构体变量课件

    ### C语言结构体变量知识点详解 #### 一、教学目标 **知识与技能:** 1. **学会和掌握结构体类型的定义方法和结构体变量的定义及初始化。** - 学习如何定义结构体类型及其变量,并了解如何正确地初始化这些变量...

    数据结构 计算结构体大小

    3. **结构体总大小**:结构体的总大小不仅仅是成员变量所占空间之和,还包括了由于内存对齐而引入的额外空间。 ### 示例分析 接下来,我们将通过几个示例来具体分析这些概念。 #### 示例 1 ```c struct data{ ...

    C语言结构体学习总结

    本文介绍了C语言结构体的学习总结,包括直接声明结构体变量、采用标签式的声明方式、利用typedef关键词产生新类型等多种方式。同时,还讨论了结构体的自引用问题,并给出了解决方案。 一、直接声明结构体变量 在...

    深度剖析C语言结构体

    做了挺久的开发,对于C这种东西,我不敢说自己已经精通了,毕竟还是有许多细节在学习的过程中会遗忘,然后再通过实践慢慢去一点点捡回来。所以只能算是熟练级别。 Linux内核的实现博大精深,从offsetof的实现到后面...

    浅谈C语言中结构体的初始化

    《代码大全》建议在变量定义的时候进行初始化,但是很多人,特别是新人对结构体或者结构体数组定义是一般不会初始化,或者不知道怎么初始化。1、初始化 代码如下:typedef struct _TEST_T { int i; char c[10];}...

    C语言常见问题集[CCFAQ V0.9.4]

    13. **以下的初始化有什么区别?** - `char a[] = "string literal";`创建了一个字符数组并初始化为字符串字面量。 - `char *p = "string literal";`创建了一个指向字符串字面量的指针。 - 当试图修改通过指针...

Global site tag (gtag.js) - Google Analytics