typedef struct与struct定义结构体

今天在定义结构体的时候发现typedef struct与struct定义结构体有一些不同之处:

结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其定义。

定义结构变量的一般格式为:

struct 结构名

{

类型  变量名;

类型  变量名;

...

} 结构变量;

结构名是结构的标识符不是变量名。

另一种常用格式为:

typedef struct 结构名

{

类型  变量名;

类型  变量名;

...

} 结构别名;

另外注意:  在C中,struct不能包含函数。在C++中,对struct进行了扩展,可以包含函数。

编程中gcc报错: expected specifier-qualifier-list before sth。网上查了下出错原因,解释如下:

在使用GCC时经常会遇到expected specifier-qualifier-list before sth之类的错误。specifiers是指void、char、struct Foo等词汇;qualifiers是指像const和volatile一类的关键字。一个词汇在未定义之前就使用就会出项这种错误,可以通过typedef进行定义以后再使用。出错语句如下所示:

typedef struct {
    int    name[20];
    int    id;
    stu    *next;    //报错
} stu;

解决方法

typedef struct {
    int    name[20];
    int    id;
    struct stu    *next;    //通过编译
}stu;

用struct定义结构体也会有同样的问题,解决方法也一样。

typedef struct与struct定义结构体

时间: 2024-10-06 16:37:40

typedef struct与struct定义结构体的相关文章

结构体与typedef的使用,还有结构体指针的使用(二层结构体指针)

该类容摘抄自以下链接,为学习之后的记录,不是鄙人原创. 学习链接:https://blog.csdn.net/a2013126370/article/details/78230890 typedef struct                {                    ...                    ...                }POINT,*POINT_P;  POINT为结构名,这个名字主要是为了在结构体中包含自己为成员变量的时候有用         

定义结构体时的初始化默认值

结构体变量定义时的初始化问题: 默认值同变量一样,int型的为0,指针型的为"NULL"------------并不是整个结构体为NULL,其中的int型还是有值0的,只是指针型的为NULL 验证一下: #include "stdafx.h" struct stu { int data; char *name; }boy1,girl={102,"xiaom"}; int _tmain(int argc, _TCHAR* argv[]) { pri

关于Go语言,自己定义结构体标签的一个妙用.

在Go中首字母大写和小写,决定着这此变量能否被外部调用, 比如:在使用标准库的json编码自定一的结构的时候: <pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" font-weight:600; color:#000080;">package</span><span style=" color:#c0c0c0;"> <

C语言如何定义结构体

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

有关结构体的认识应用

最近把结构体的部分知识又仔细的研究学习了一下,总结了一下内容,希望者篇文章对那些对结构体模糊的人c结构体 1, 结构体是一种自定义的数据类型,也是用来存储多个数据的大容器不过结构体要比数组灵活,它可以存储不同类型的数据 2, 结构体的定义 struct + 结构体名字 {大括号中填写结构体成员,多个结构体成员之间通过分号间隔} 如下: struct student { // 结构体成员 char name[20];//存储姓名 char sex;   // 存储性别 int number; //

c语言中结构体指针

1.指向结构体的指针变量: C 语言中->是一个整体,它是用于指向结构体,假设我们在程序中定义了一个结构体,然后声明一个指针变量指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到指向运算符"->". 举例说明: struct SunLL { int a; int b; int c; }; struct SunLL  * p;               //定义结构体指针 struct SunLL A = {1,2,3};    //定义一个SunLL类型的变量A

黑马程序员——c语言中结构体的使用以及注意事项和实际应用

1.结构体和数组的区别①结构体:结构体可以由多个不同类型的数据构成,可以 包含int double等多种类型②数组:数组则只能由多个相同类型数据构成 2.结构体的定义①先定义结构体类型 struct Person { int age; //age height name 三个变量可以称之为结构体成员或者属性 double height; char*name; } ②根据结构体类型定义结构体变量 struct Person p={20,1.75,"tom"}; p.age=30; p.n

结构体的应用与理解.戴维营第九天

学了结构体,通过从最简单结构体输入到结构体数组,结构体指针,结构体作为函数参数,包含结构的结构,每种都进行敲代码来理解和体会,另外还学到了栈,先进后出,后进先出,堆需要自己分配,同时一定要有个明确的指针,否则自己都会找到不到,程序中的malloc, calloc, realloc等函数都是分配内存. 由小的空间向大的空间分配, 堆是从下向上分配.至于链表还在练习中 #include <stdio.h> #include<string.h> struct Student /*学生结构

黑马程序员---C语言基础---结构体

------iOS培训.Java培训.Android培训, iOS学习型技术博客,期待与您交流------ C语言基础---结构体 一.什么是结构体 介绍结构体之前,我想先简单介绍下数组.我想大家对数组都再熟悉不过了,顾名思义,数组就是将一些数据(元素)组合在一起,作为一个整体.使用数组需要注意的是这些元素必须是相同类型.而结构体和数组类似,也是将一些数据组合在一起作为一个整体,但是这些元素可以是不同类型.可以这么理解:结构体是更加灵活的数组,因为它允许元素是不同的类型. 实际生活中,如果我们要