#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. C#-黑客-数据库访问-字符串的攻击和防御

    C#中用基本的方法对数据库进行增删改查,会被黑客利用,写入其他的代码以实现对数据库的数据进行其他的操作.例如: 对下列数据库的某个信息进行修改操作 修改代码: using System; using ...

  2. 匿名内部类为什么访问外部类局部变量必须是final的?

    1.内部类里面使用外部类的局部变量时,其实就是内部类的对象在使用它,内部类对象生命周期中都可能调用它,而内部类试图访问外部方法中的局部变量时,外部方法的局部变量很可能已经不存在了,那么就得延续其生命, ...

  3. 绘制图形与3D增强技巧(二)----直线图元

    一. glBegin(GL_LINES); glend(); 二.线带和线环 glBegin(GL_LINE_STRIP); glend(); glBegin(GL_LINE_LOOP); glend ...

  4. 关于当一个C#工程移植到另一台机子上(win7)上时,程序报错。dll没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序。。。。。。

    , 解决方法:通过从网上重新下载dll文件 拷贝到报错的目录下,替换掉原有的dll,可以正确运行.

  5. 一个关于AdaBoost算法的简单证明

    下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...

  6. ( 译、持续更新 ) JavaScript 上分小技巧(一)

    感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...

  7. CF 445B DZY Loves Chemistry(并查集)

    题目链接: 传送门 DZY Loves Chemistry time limit per test:1 second     memory limit per test:256 megabytes D ...

  8. [转]如何启用Ubuntu的休眠模式

    大家都知道 Windows 有休眠模式,其实 Ubuntu 也有.休眠模式简单来说,就是可以在用户暂时离开时将内存中的所有内容都写入到硬盘当中,当用户下次开机时,就可以直接启动到上次保存的时间状态. ...

  9. android service 本地 远程 总结

    android编写Service入门 android SDK提供了Service,用于类似*nix守护进程或者windows的服务. Service有两种类型: 本地服务(Local Service) ...

  10. Linux下串口编制【转】

    串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...