C中几种相对不常用类型 - 结构体

来源:互联网 发布:mac 远程光盘 编辑:程序博客网 时间:2024/06/17 12:24
结构体

定义方法
struct person
{
 char name[10];
 int age;
 char sex;
};

变量定义方法
方法1:
struct person
{
 char name[10];
 int age;
 char sex;
};
struct person jim;    //定义时,前面要加struct

方法2:
struct person
{
 char name[10];
 int age;
 char sex;
}jim;           //可以在结构体定义时,同时进行变量定义
以这种方法定义时,可以使用无名结构体如下:
struct
{
 char name[10];
 int age;
 char sex;
}jim; 
这样,只能定义一个结构体变量jim。下面再需要时就无法定义了。

变量引用方法
一般结构体,jim.age
结构体指针,jim->age
要注意对其中指针变量的操作,比如name: 
struct person *tom;
strcpy(tom->name, "yfpeng");
而不能用 tom->name = "yfpeng";

结构体数组
struct person
{
 char name[10];
 int age;
 char sex;
}key[3]; 

key[0].age = 80;
与普通数组的使用相同。

结构体指针
struct person
{
 char name[10];
 int age;
 char sex;
}*tom; 

结构体指针同其它指针变量一样,要经过初始化。
tom = (struct person *)malloc(sizeof(struct person));

前面已经说过结构体指针,引用内部变量用->,其实这个符号的作用如下:
tom->age = 20;
(*tom).age = 20;
是一个取值操作,为了方便而引入了 ->

结构体的大小

sizeof(struct person)
理论上应该等于结构体内各变量加起来的大小之和。但由于内存存储方式的原因,往往得到的结果与理论不符。

结合typedef定义结构体为一个新类型
typedef struct person
{
 char name[10];
 int age;
 char sex;
}tom;
这样,tom被定义为一个新类型,其实就是struct person。这种情况下,可以使用无名结构体,不用指明person了。使用方法如下:
tom t;
t.age = 80; 

原创粉丝点击