结构体的使用
来源:互联网 发布:直播特效声音软件 编辑:程序博客网 时间:2024/05/17 12:52
结构体是一种构造数据类型,是不同数据类型数据组成的集合体。我们可以根据需要自己定义结构体,
简化自己的代码,使之可读性和灵活性提高。
结构体类型的定义如下:
struct 结构体类型名
{
结构体成员1;
结构体成员2;
.
.
结构体成员n;
};
结构体成员可以是任何数据类型数据,如:
struct Stud
{
char name;
int num;
};
上面定义了一个Stud类型的结构体。这里要区分结构提变量与结构体类型的关系。
刚开始接触结构体会不太清楚两者的区别。所谓类型我们可以看作是一种属性或内涵。
拿上面这个例子来说,如果我们以后定义了Stud这种类型的结构体变量,那么这个
变量的里面就一定有一个char 型的变量 name和一个整型的num。
上面只是构造了一个结构体类型,并未定义一个结构体变量。定义结构体变量的方法有两种:
第一种方法:在定义结构体类型之后再定义,如:
struct Stud
{
char name;
int num;
};
struct Stud stud1 , stud2;
这样就定义了两个结构体变量stud1和stud2,之后就可以使用这两个变量了。
第二种方法:在定义结构体类型之后同时定义,如:
struct Stud
{
char name;
int num;
} stud1 , stud2;
效果与第一种方法一样。
要注意的是在定义结构体类型是,编译器是不会给它们分配内存的,只有在具体定义这个类型的结构体变
量时才会分配内存,因此在定义结构体类型时是不能对它进行初始化的如:
struct Stud
{
char name = 0;
int num = 0;
} ;
是非法的。
结构体类型在定义的时候类型名可以省略,但在定义类型的时候,必须同时定义结构体变量,否则在后面的程序中
想要定义这种类型的结构体就麻烦了,因为你不知道这种类型叫什么。
如
struct
{
char name ;
int num ;
};
这种定义是无意义的。
可以这样定义
struct
{
char name ;
int num ;
} stud1 , stud2;
这样也可以定义两个结构体变量。但这种方式不太灵活,因为你必须一次就要把所有要用到的变量全部定义完。还有一种方式就是给它另外取了一个名字,这时就要用到“typedef”这个东东了。它专给人家取小名。先看个例子:
typedef struct
{
char name ;
int num ;
}STUD;
这时,STUD不再是结构体变量了,而是我们就给这种结构体类型取的一个别名STUD,
定义变量这样定义就行了
STUD stud1, stud2;
我们还可以定义结构指针。它的定义与结构体变量定义类似。为了简便后面就都用"小名"的方式定义结构体变量。
typedef struct
{
char name ;
int num ;
}DTUD;
DTUD *p, stud1;
这样就定义了一个DTUD类型的指针和变量,与普通指针一样结构体指针在使用前必须指向一个地址。
如 p=&stud1;这样指针p就可以使用了,还有一点要注意的是不能把结构体成员的地址赋给结构体指针。
如: p = stud1.num ; 是不合法的。
利用 p 引用结构体变量 stud1 的成员的方式如下:
p->name ="abc";或(*p).name ="abc"; 与 stud1.num ="abc";是一样的,
(*p).name ="abc";中()不能少, 因为 " . " 优先级高于“ * ”,去掉括号后相当于*(p.name)这明显不对。
2 0
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用
- 结构体的使用概述
- 结构体、qsort的使用
- 结构体、sort的使用
- timeval结构体的使用
- 变长结构体的使用
- 结构体类型的使用
- 结构体指针的使用
- C 结构体的使用
- 算法训练 装箱问题
- ubuntu安装weblogic64位
- Android--WindowManager.LayoutParams(下)
- 2,3,4,11章
- 学习反思:软件架构和索引深度
- 结构体的使用
- SQL Server Change Data Capture
- 搭建Android开发环境
- HDU 5671 Matrix
- Web开发(二)--JSP
- MATLAB函数运算
- IIR型高斯滤波的原理及实现
- HDU 5673 Robot
- 分类与扩展