C语言学习日记————结构体

结构体是一种数据类型-----构造类型

struct 结构体名
{
   成员列表
};

1、struct                                      //结构体 类型 关键字
2、结构体名                                //表明这个结构体类型的名称
3、成员列表                                //来描述结构体类型中具体的一些数据
                                                    //成员变量
       
       
注意结束的}后面要有一个分号!!
声明结构体类型
struct studet
{
    char name[20];
    char sex;
    int sno;
    float core;
}

int main(void)
{
    int a;
    //初始化方式:按照成员列表的对应方式依次初始化
         struct student s = {“xiaoming”,0,1110,99.5};
         
         结构体变量的引用:
         方法:
         结构体变量名.成员名       (这个.是结构体成员运算符)
         eg:s.name   //访问s中的name
   //打印
    printf("name = %s\n",s.name);   //访问s中的name
}


结构体变量不能整体的输入值
 eg:  scanf(“%d”,&s.sno);     因为.运算符的优先级高于&。所以不需要加括号
 
 注意: 在输入字符型数据的时候结尾的回车哟啊通过getchar()来吃掉它
 eg:  scanf(“%s”,&s.name);
       getchar();
       scanf(“%c”,&s.sex);

定义的方式:
1、 先声明变量 再定义变量   
   //如上面的例子
   但不能再main中声明会出现错误
2、 声明类型的同时定义变量:
   struct student
   {
       ...
   }s;
   
3、 声明类型的同时定义变量 但是省略结构体的名
  suruct 
  {
      。。。
  }s;
  
  
  
  0.两个结构体运算符:
  
  .                //成员运算符
  方法:  
      结构体变量名 . 成员变量名
  
  ->             // 指向结构体成员运算符
  方法:
       结构体类型的指针 -> 成员变量名
  
  同一类型的结构体变量之间是可以相互赋值的
  通过结构体类ing的指针 也可以访问到结构体成员
  结构体类型既可以做函数形参,也可以做为返回值
  
  
  qsort(起始地址,元素个数,单个元素大小,排序规则)
  
  
 
 考点:
   结构体实际的大小并不等于结构体里数据类型大小的简单相加
 
 !注意!
   计算机存在效率问题
 
 
 内存对齐:
  结构体对齐规则:    //内存地址的对齐
  结构体对齐:
  1、在32位的平台上,默认都是按照4字节对齐的。
     在64位的平台上,默认都是按照8字节对齐的
  2、对于成员变量,
     各自在自己的自然边界上对齐。
      char --1字节
      short--2字节
      int  --4字节
  
  3、如果 成员变量中有比4字节大。此时整个结构体按照4字节对齐。
  4、如果 成员变量中没有比4字节大的,此时整个结构体按照最大的那个成员对齐。   

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值