#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. 北京Java培训机构哪个好

    又是一年暑期生活的来临,对于即将走出校园的实习生而言,培训潮与就业潮不约而至,培训行业的就业课程开班也如火如荼地进行着. 一直以来,计算机专业的毕业生都会作为一股庞大的生力军涌入社会各个岗位.就目前的 ...

  2. js学习笔记4----数据类型

    1.ECMAScript:标准.核心 JS中的数据类型:数字(NaN).字符串(空隔也会占据长度).布尔值(true和false).函数.对象(obj.[].{}.null).undefined. t ...

  3. 给<tr>标签添加边框

    今天做网站时发现给<tr>添加border无效.起初还以为tr不支持这个属性,百度,原来只要给<table>添加一句代码就可以了,代码如下: table{border-coll ...

  4. 面试题:Integer和int的区别?在什么时候用Integer和什么时候用int

    /*  * (1) int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类. * (2)int的默认值为0, 而Integer的默 ...

  5. Linux 查看文件内容

    cat   由第一行开始显示档案内容 格式: cat [选项] [文件]... -A, --show-all 等价于 -vET -b, -- 对非空输出行编号 -e 等价于 -vE -E, --在每行 ...

  6. 如何使用maven建一个web3.0的项目

    使用eclipse手动建一个maven的web project可能会有版本不合适的情况,例如使用spring的websocket需要web3.0什么的,不全面的修改可能会出现各种红叉,甚是苦恼.我从我 ...

  7. css-a与a:link的一些认识

    1.a元素有四种状态: a:link {color:blue;}//未点击的链接状态 a:visited {color:blue;}//已点击的连接状态 a:hover {color:red;}//鼠 ...

  8. css-使用line-height实现垂直居中的一些问题

    网上都是这么说的,把line-height值设置为height一样大小的值可以实现单行文字的垂直居中.这句话确实是正确的,但其实也是有问题的.问题在于height,看我的表述:"把line- ...

  9. css-子div设置margin-top后,父div与子div一起下移

    根据海玉的博客 这个问题发生的原因是根据规范,一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会和其内部文档流中的第一个子元素的上边距重叠. 再说 ...

  10. UOJ265 【NOIP2016】愤怒的小鸟

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...