黑马程序员——C语言——结构体与枚举
来源:互联网 发布:兰博基尼苹果壁纸软件 编辑:程序博客网 时间:2024/05/22 01:56
———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
一、结构体
1、结构体的定义
结构体与数组的区别
数组:只能由多个相同类型的数据构成
结构体:可以由多个不同类型的数据构成
定义结构体的3种方式
1> 先定义类型,再定义变量
// struct是关键字,是结构体类型的标志。struct Person{
int age;double height;char *name;
};struct Person p = {20, 1.6, "jack"};2> 定义类型的同时定义变量struct Person{
int age;double height;char *name;
} p = {20, 1.6, "jack"};3> 定义类型的同时定义变量,省略结构体名称,不能重用
struct{
int age;double height;char *name;
} p = {20, 1.6, "jack"};//错误写法struct Person p2;p2 = {30, 1.7, "rose"};2、内存分析
// 定义结构体类型(不会分配存储空间)
struct Date
{
int year;
int month;
int day;
};
// 定义结构体变量(真正分配存储空间)
struct Date d = {2011, 10, 11};
补齐算法(对齐算法):
结构体所占存储空间,必须是最大成员字节数的倍数。
3、结构体数组
既然结构体是一种数据类型,那么结构体就可以成为数组的元素类型。
struct Rank
{
int no;
char *name;
int score;
};
struct Rank r[3] = {
{1, "jack", 500};
{2, "jim", 300};
{3, "rose", 100};
};
r[0].no = 4;
// r[0] = {4, "jake", 50};
4、指向结构体的指针
定义形式:struct 结构体名 *指针变量名
访问结构体成员的3种方式
#include <stdio.h>
int main()
{
struct Student
{
int age;
int no;
};
struct Student stu = {20, 1};
// 指针变量p将来指向struct Student类型的数据
struct Student *p = &stu;
// 第一种方式
printf("age=%d,no=%d\n",stu.age, stu.no);
// 第二种方式
printf("age=%d,no=%d\n",(*p).age, (*p).no);
// 第三种方式
printf("age=%d,no=%d\n",p->age, p->.no);
return 0;
}
5、结构体的嵌套定义
结构体的成员变量可以是另一个结构体
struct Date
{
int year;
int month;
int day;
};
struct Person
{
int no;
struct Date birthday;
/*错误写法 不能自己包含自己
struct Person p;*/
}
二、枚举
当变量只有几个固定的取值时,这个变量可以定义为枚举类型。
1、枚举类型的定义
// 定义枚举类型
enum Sex
{
sexMan;// 值为0
sexWoman;// 值为1
};
// 定义枚举变量
// enum Sex s = 0;
enum Sex s = sexMan;
2、枚举元素的值取决于定义时各个枚举元素的顺序,
默认第一个枚举元素的值为0,第二个为1,依次累加。
3、定义枚举类型时可以指定某个枚举元素的值,后面依次累加。
enum Season
{
spring;// 值为0
summer;// 值为1
autumn = 5;// 值为5
winter;// 值为6
}
———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
- 黑马程序员——C语言------结构体、枚举
- 黑马程序员——C语言基础---结构体、枚举
- 黑马程序员—C语言_结构体、枚举
- 黑马程序员——C语言——结构体与枚举
- 黑马程序员————C语言——结构体、枚举、typedef
- 黑马程序员——C语言——结构体、枚举
- 黑马程序员——C语言基础——结构体、枚举
- 黑马程序员——C语言学习——结构体、枚举
- 黑马程序员——C语言基础08—结构体/枚举
- 黑马程序员——4、C语言(结构体、枚举)
- 黑马程序员——C语言---结构体、枚举、预处理指令
- 黑马程序员——C语言学习之结构体和枚举
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- 黑马程序员——C语言知识点总结之结构体和枚举
- 黑马程序员—C语言—数组、字符串、结构体和枚举
- 黑马程序员——C语言基础---复杂数据类型(变量,结构体,枚举)
- 黑马程序员--C语言——结构体和枚举类型
- 黑马程序员——ios学习笔记 C语言 结构体&链表&枚举
- Java多线程---Lock类
- 设计模式--UML关系与代码对照
- 考试终于结束了
- JQuery中的事件
- 删除链表中的重复节点、剩余节点逆序输出
- 黑马程序员——C语言——结构体与枚举
- 关于Android设备屏幕大小及密度的系统参数类
- [C++]LeetCode: 84 Generate Parentheses (卡特兰数)
- CentOS上安装Oracle XE指南
- android webView参数
- 回顾2014
- android中Invalidate方法
- Web前端 bom 头 <feff>的问题
- android maven Unable to execute dex: Multiple dex files define