C-结构体、枚举
#include <stdio.h> //结构体:可以由多个不同类型的数据构成
int main()
{
struct Person
{ //里面的3个变量,可以称为是结构体的成员或者属性
int age;
double height;
char *name;
}; struct Person p = {, 1.55, "jack"};//根据结构体类型,定义结构体变量,,,,且只能在定义结构体变量的同时对成员进行依次赋值。
p.age = ;
p.name = "rose"; return ;
}
#include <stdio.h> int main()
{ //1.定义结构体类型(并不会分配存储空间)
struct Date
{
int year;
int month;
int day;
}; //2.定义结构体变量(真正分配存储空间)
struct Date d1 = {, , };
struct Date d2 = {, , };
//会将d1 所有成员的值对应地赋值给d2的所有成员
d2 = d1; return ;
}
从小到大,从上往下

#include <stdio.h>
int main()
{
struct Student
{
int age;
char *name;
} struct Student stu;
stu.age = ;
stu.name = "jack"; int s = sizeof(stu);
printf("%d\n", s); return ;
}
//输出为:16
//补齐算法, 结构体所占内存空间,一定为最大成员所占存储空间的倍数,
变量的多种定义方式:
#include <stdio.h>
int main()
{ /*方式一:
//1.类型
struct Student
{
int age;
double height;
char *name;
};
//2.变量
struct Student stu = {20, 1.78, "jack"};
*/
//方式二
struct Student
{
int age;
double height;
char *name;
} stu;//等同于方式一 //包括两个部分 1,定义结构体类型 2,利用新定义好的类型来定义结构体变量 //即定义类型的同时定义变量
struct Student stu2;//再次使用S他人的n天
//方式三
struct {
int age;
char *name;
} stu;//缺点:不能重用 return ;
}
总结: 定义结构体变量的3种方式
1,先定义类型再定义变量
struct Student { int age; };
struct Student stu;
2, 定义类型的同时定义变量
struct Student { int age; } stu; struct Student stu2;
3, 定义类型的同时定义变量(省略类型名称)
struct { int age; } stu;
//指向结构体的指针
int main()
{
struct Student
{
int no;
int age;
}; struct Student stu = {, }; struct Student *p;//指针变量p将来指向struct Student类型的数据
p = &stu;//指针变量p指向了stu变量 //第一种
printf("age= %d, no=%d\n", stu.age, stu.no); //第二种
printf("age= %d, no=%d\n", (*p).age, (*p).no);//访问stu的存储空间里的no //第三种
printf("age=%d, no=%d\n", p->age, p->no);
}
总结:
1, struct Student *p;
2, 利用指针访问结构体成员
1》 (*P).成员名称
2》 p->成员名称
//结构体的嵌套
int main()
{
struct Date
{
int year;
int month;
int day;
} struct Student
{
int no;
//int year;
//int month;
//int day; struct Date birthday;
struct Date ruxueDate;
}
struct Student stu = {, {, , }, {, , }};
return
}
枚举
//枚举
int main()
{
//定义枚举类型
enum Season
{
spring,//0 也可以自定义为1
summer,//
autumn,//
winter//
};
//2,定义枚举变量
enum Season s = summer
return ;
}
数据类型总结----------------------------------
基本数据类型
int
long int 、 long 8 %ld
short int 、 short 2 %d %i
unsigned int、 unsigned 4 %zd
signed int、 signed、 int 4 %d %i
float/double
floar 4 %f
double 8 %f
char 1 %c %d
char类型保存在内存中的是它的ASCII值
二构造类型
1,数组
只能由同一种类型的数据组成、
2,结构体
可以由不同类型的数据组成
三、指针类型
间接操作变量的值
C-结构体、枚举的更多相关文章
- OC基础--结构体 枚举做类成员属性
结构体 枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期 毕业日期 -- 结构体 代码示例: 声明文件 Student.h: #import <Foundation ...
- C# 结构体 枚举类型
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...
- C# 类&结构体&枚举
类: class Lei //要和static void Main(string[] args)平级: { public int lei_int; //public是关键字,代表访问权限,这里是公 ...
- C 碎片八 结构体&枚举&联合
一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct 结构体名 {成员列 ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- C++_知识点_结构体/枚举/联合
//C++中结构体的不同之处 #include <iostream> #include <string> using namespace std; int main(void) ...
- C语言的结构体,枚举类型在程序中的作用
http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...
- C#学习笔记_12_枚举&结构体
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...
- Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数
知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...
- swift中类与结构体
写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...
随机推荐
- Selenium+WebDriver+Python 定时控制任务
为了更对得起"自动化测试"的名号,我们可以设置定时任务,使我们自动化脚本在某个时间点自动运行脚本,这样就可以让测试在夜间进行,减少了时间成本.通过程序来控制test case在什么 ...
- dede使用方法---用js让当前导航高亮显示
当前导航高亮显示能够提升用户体验,我也知道,大家在网上搜dede让当前导航高亮显示的方法一抓一大把,但是,并不一定适合自己的需求.就像我的需求一样,导航有个二级导航,然后需要做到让当前导航高亮显示.我 ...
- dede使用方法----调用列表页的分页功能
分页的标签:<div class="dede_pages"> <ul class="pagelist"> {dede:pagelist ...
- Cell右滑的动作状态
//允许cell可以进行编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)index ...
- 警告 “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
http://blog.csdn.net/sagaryu/article/details/52137989 我的是2.6.4,用上面链接提供的编译好的资源覆盖原来的就好了. 不管也没事. 就是因为系统 ...
- 【bzoj3218】 a + b Problem
http://www.lydsy.com/JudgeOnline/problem.php?id=3218 (题目链接) 题意 给${n}$个格子涂白或黑色,白则${w_i}$,黑则${b_i}$的好看 ...
- bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- CSS 预处理器(框架)初探:Sass、LESS 和 Stylus
现在最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 拿less来说,可以在页面上直接使用less文件,但要引用less.js进行解析:同时也可以直接将less ...
- CruiseControl.NET配置文件(生产环境版本,与SVN结合自动部署)
配置如下: 说明:此配置文件的功能是当有SVN修改时,会自动触发并编译发布,间隔为10秒. 由于配置文件上面有注释,如果提示节点配置错误,请删除这些注释. 官方详细节点配置说明:http://www. ...
- Cloud Design Patterns Book Reading(undone)
目录 . the most common problem areas in cloud application development ) Availability ) Data Management ...