您的位置:首页 > 职场人生

黑马程序员--C基础--构造类型和结构体

2015-06-26 14:57 477 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1、构造类型

1–构造类型:构造类型是根据已定义的一个或多个数据类型用构造的方法来定义的。

2–C语言中的构造类型有:数组类型、结构体类型、共用体类型。

3–“结构”是一种构造类型,它是由若干“成员”组成的,每一个成员可以是一个基本数据类型或者又是一种构造类型。

2、结构体

(1)结构体的定义:

一般格式为:

struct 结构名{

成员表列
};


注意:结构体格式没有参数,{}后面有一个分号;

例://定义一个学生的结构

struct stu{
int num; //定义学生编号
char name[20];
char sex;
float age;
};


注意:

1–结构体定义完成后,计算机不会给结构体分配内存空间。

2–会在定义结构体变量后,分配内存空间。

(2)结构体变量的定义

一般格式为:

struct 结构体名 变量名称;


例: struct stu stu1;

(3)匿名结构体变量的定义

所谓匿名结构体,就是该结构体没有结构体名称,因此在定义此类结构体变量时,应该在定义结构体的同时就定义变量。

例: struct{

int num;

char name[20];

int age;

}stu1,sut2;

(4)结构体变量中成员的访问方法

访问结构体变量成员的方法是:

结构体变量名.成员名


例: stu1.age; //访问学生stu1的年龄

stu1.name; //访问stu1的姓名

注意:

如果结构体成员本身又是一个结构体类型,那么访问时必须逐级找到最低级的那个成员才能使用。

(5)结构体变量的初始化

结构体变量的初始化和普通的初始化一样存在两种方式:定义的同时初始化以及先定义后初始化。定义的同时进行初始化和普通变量一样,在次就不多说。

那么接下来重点说下先定义后初始化。

例:

//定义结构体和结构变量
struct Student{
int num;
char name[20];
int age;
char sex;
int score;
}stu1,stu2;
//初始化
stu1.num=21;//普通变量初始化,用.直接引用复制
strcpy(stu1.name,"张三");//因为name是个常量,不能通过上述方法初始化,所以使用strcpy()函数进行数组的初始化。


注意:

(1)上述“张三”在程序中占用6个字节,这是因为汉字在utf-8编码中占用的字节数是三个,而xcode中默认的中文编码是utf-8格式。

(2)在国标中我们使用的是GB2312编码,该编码一个汉字占用2个字节。

(6)结构体变量占用内存空间的计算

计算结构体变量在内存中占用的字节数的方法

1–先找到对其模数,所谓对其模数就是结构体中的基本数据类型中占用字节数最大的那个。

2–再计算结构体变量中各个成员占用的字节和。

例:

//该结构体模数是4,占用的字节数是12
struct stu{
short a;  // 2
float b;  // 4
char c;   // 1
}
//该结构体模数是4,占用的字节数是32
struct stu1{
char s[13];
char s1[13];
int a;
}


3、结构体数组

结构体数组就是定义结构体变量时,该变量是一个数组,而不是一个普通的变量名称。结构体数组的每一个元素都是具有结构体类型的下标结构变量。

(1)定义

定义格式:

struct 结构名{
成员列表
}数组名[数组长度];


例:

struct student{
int num;
char name[20];
int age;
}stu[5];


(2)结构体数组的初始化

以下面结构体为例:

struct student{
int num;
char name[20];
int age;
};


1–定义的同时初始化

struct student stu[2]={{12,“zhangsan”,18},{11,”lisi”,17}};

2–先定义,后初始化

stu[1]=(struct student){19,”wanger”};

4、结构体指针

一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构体指针变量的值是指向的结构体变量的首地址。

(1)结构体指针变量定义的一般形式:

struct 结构名 *结构指针变量名


例: struct student *stu;

(2)结构体指针间接访问成员值

一般形式:

(*结构指针变量).成员名
或
结构指针变量->成员名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  程序员 c