结构体学习

结构体:
      提供一种可以让程序员自定义数据类型的方式
      目的:
          用来解决 一些 复杂的数据类型问题
          结构体 是一种数据类型 --- 构造类型 

结构体类型 构造(定义)语法:
//构造一个结构体类型 --- 声明结构体 
struct 结构体名

    成员列表
};

举例:

struct student 
{
    char name[20];
    char sex;
    int sno;
    float score;
};

//结构体变量初始化
struct student s = {"xiaoMing",0,1110,99.5} ;

//初始化 ,需要按照 成员列表的顺序,依次初始化 
//成员与成员之间的初始化的值,用逗号隔开
//s变量中,存储的是某一个学生的信息 

结构体变量的引用:
方法:   结构体变量名.成员名 

. 结构体成员运算符 //表示 从属关系 

s.name //表示访问s变量中的 name 

//结构体变量 赋值 
结构体变量不能整体输入值 ,只能输入给成员变量 

声明结构体类型并使用的三种方式:
1. 方式1
 先声明类型 后定义变量 
 struct student
 {
  ...
 };//声明类型 
 
 struct student s; //定义变量  

2. 方式2 
  声明类型的同时定义变量 
   struct student
 {
  ...
 }s;//声明类型 并 定义变量 

3. 方式3 
  声明类型的同时,定义变量,但是结构体名,可以省略   
 struct
 {
  ...
 }s;//声明类型 并 定义变量 

结构体特点:
  1.成员变量 一般是不同类型 //表示不同的含义 
  2.对于成员变量的访问
   只能通过 . (成员运算符),逐个访问
   不能通过类似 数组下标的方式,进行逐个遍历 

  . //成员运算 
方法: 
 结构体变量名.成员变量名   
 -> //指针的结构体成员运算 
方法:
 结构体类型指针->成员变量名 

内存对齐          
结构体对齐规则
结构体的对齐:
结构体的对齐规则: //内存地址的对齐
1.在32位的平台上,默认都是按4字节对齐的。 
2.对于成员变量,
   各自在自己的自然边界上对齐。
   char  -- 1字节 
   short -- 2字节 
   int   -- 4字节 
   
3.如果 成员变量中有比4字节大。      
  此时 整个结构体按照4字节对齐。
4.如果 成员变量中没有有比4字节大。  
  此时 整个结构体按照最大的那个成员对齐。   
  //32位的平台   
  //如果有超过4字节 ,按照4字节对齐
  //如果没有超过4字节的,则按成员变量中最大对齐 
  
  //64位的平台
  //如果超过4字节的,按照最大的成员对齐 
  //如果没有超过4字节的,则按成员变量中最大对齐
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值