C语言-------结构体(1)

数据类型

(1)基本数据类型

整型

浮点型

字符型

(2)构造类型

数组

结构体

结构体: 用来处理,现实生活中,更复杂的数据的描述

用来 描述复杂数据的 一种用户自定义的数据类型

一.结构体类型 定义 --- 定义(从无到有) 声明()

struct 结构体名

{

成员列表

};

(1).struct 表示这是一个结构体类型

(2).结构体名 标识符

(3).成员列表 这个结构类型中要描述的具体数据 ,一般都是变量定义的形式

cpp 复制代码
 struct student
   {
       int sno;
       char name[20];
       int age;
       float score;
  };

(此时表示 定义了一个 学生信息的结构体类型 数据类型 --- 用户自定义)

变量的初始化 和 赋值

struct student s = {110,"tom",18,98.5};

cpp 复制代码
struct student s[3]={{110,"tom",12,98.2},{111,"jey",13,97.5},{112,"mik",10,99.5}};

引用结构体数据 一般我们是引用到结构体成员 (引用到这种基本类型)

cpp 复制代码
int main(int argc, const char *argv[])
  {
      struct student s={110,"tom",18,98.5};
      printf("sno=%d\n",s.sno);
      printf("name=%s\n",s.name);
      printf("age=%d\n",s.age);
      printf("score=%.1f\n",s.score);
      return 0;
  }

结构体变量名.结构体成员变量名

s.sno

s.name

s.age

s.score //引用到结构体成员变量

说明:

  1. 同一类型的结构体 变量间可以相互赋值

  2. 结构体变量赋值,是赋值给结构体成员的

-> //指向结构体成员运算符

结构体类型的指针->结构体成员变量名

cpp 复制代码
void printStuInfo(struct student *s,int len)
      {
          int i=0;
          printf("No\tName\tAge\tScore\n");
          printf("------|\t------|\t------|\t------\n");
          for(i=0;i<len;++i)
          {
              printf(" %d\t",(s+i)->sno);
              printf("%s\t",(s+i)->name);
              printf("%d\t",(s+i)->age);
              printf("%.2f\n",s[i].score);
          }
      }

考点:

结构体的对齐规则: //内存地址的对齐

1.在32位的平台上,默认都是按4字节对齐的。

2.对于成员变量,

各自在自己的自然边界上对齐。

char -- 1字节

short -- 2字节

int -- 4字节

3.如果 成员变量中有比4字节大。

此时 整个结构体 按照4字节对齐。 //32位的平台

4.如果 成员变量中没有有比4字节大。

此时 整个结构体 按照最大的那个成员对齐。

//32位的平台

//如果有超过4字节 ,按照4字节对齐

//如果没有超过4字节的,则按成员变量中最大对齐


//64位的平台 ---- 64位平台 整个结构体对齐, 按成员中最大的对齐

1.结构体成员的对齐 --- 放在自然边界 (偶数位置)

2.结构体整体的对齐 --- 以结构体中最大的成员对齐

相关推荐
lifallen14 分钟前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研17 分钟前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
cui__OaO2 小时前
Linux软件编程--线程
linux·开发语言·线程·互斥锁·死锁·信号量·嵌入式学习
鱼鱼说测试2 小时前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
艾莉丝努力练剑3 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
CHEN5_023 小时前
【Java基础面试题】Java基础概念
java·开发语言
Cx330❀4 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
杜子不疼.4 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
落霞的思绪5 小时前
Java设计模式详细解读
java·开发语言·设计模式
阿巴~阿巴~5 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list