#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-结构体、枚举的更多相关文章

  1. OC基础--结构体 枚举做类成员属性

    结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation ...

  2. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  3. C# 类&结构体&枚举

    类: class Lei  //要和static void Main(string[] args)平级: { public int lei_int;  //public是关键字,代表访问权限,这里是公 ...

  4. C 碎片八 结构体&枚举&联合

    一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct  结构体名 {成员列 ...

  5. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  6. C++_知识点_结构体/枚举/联合

    //C++中结构体的不同之处 #include <iostream> #include <string> using namespace std; int main(void) ...

  7. C语言的结构体,枚举类型在程序中的作用

    http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...

  8. C#学习笔记_12_枚举&结构体

    12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch c ...

  9. Swift超详细的基础语法-结构体,结构体构造器,定义成员方法, 值类型, 扩充函数

    知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相 ...

  10. swift中类与结构体

    写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...

随机推荐

  1. Selenium+WebDriver+Python 定时控制任务

    为了更对得起"自动化测试"的名号,我们可以设置定时任务,使我们自动化脚本在某个时间点自动运行脚本,这样就可以让测试在夜间进行,减少了时间成本.通过程序来控制test case在什么 ...

  2. dede使用方法---用js让当前导航高亮显示

    当前导航高亮显示能够提升用户体验,我也知道,大家在网上搜dede让当前导航高亮显示的方法一抓一大把,但是,并不一定适合自己的需求.就像我的需求一样,导航有个二级导航,然后需要做到让当前导航高亮显示.我 ...

  3. dede使用方法----调用列表页的分页功能

    分页的标签:<div class="dede_pages"> <ul class="pagelist"> {dede:pagelist ...

  4. Cell右滑的动作状态

    //允许cell可以进行编辑 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)index ...

  5. 警告 “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”

    http://blog.csdn.net/sagaryu/article/details/52137989 我的是2.6.4,用上面链接提供的编译好的资源覆盖原来的就好了. 不管也没事. 就是因为系统 ...

  6. 【bzoj3218】 a + b Problem

    http://www.lydsy.com/JudgeOnline/problem.php?id=3218 (题目链接) 题意 给${n}$个格子涂白或黑色,白则${w_i}$,黑则${b_i}$的好看 ...

  7. bzoj1724: [Usaco2006 Nov]Fence Repair 切割木板

    #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...

  8. CSS 预处理器(框架)初探:Sass、LESS 和 Stylus

    现在最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 拿less来说,可以在页面上直接使用less文件,但要引用less.js进行解析:同时也可以直接将less ...

  9. CruiseControl.NET配置文件(生产环境版本,与SVN结合自动部署)

    配置如下: 说明:此配置文件的功能是当有SVN修改时,会自动触发并编译发布,间隔为10秒. 由于配置文件上面有注释,如果提示节点配置错误,请删除这些注释. 官方详细节点配置说明:http://www. ...

  10. Cloud Design Patterns Book Reading(undone)

    目录 . the most common problem areas in cloud application development ) Availability ) Data Management ...