C_08 结构体

作者: Nian糕 | 来源:发表于2017-01-09 17:59 被阅读23次

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员 (Member)

形容一个人:姓名、性别、手机号、地址

char name[]="jock";
char sex='m';
int phone=186 XXXX XXXX;
char address[]="guangzhou";

定义一个人类的结构体类型

struct Person
{
//成员变量
  int phone;
  char name[];
  char sex;
  char address[];       
};

1、在结构体的最后需要加一个分号 ;
2、struct 表示结构体的关键字
3、struct+Person 就相当于一个新的类型,相当于 int
4、结构体就是有 1 个或者多个基本数据类型,合在一起组成的一个新的综合数据类型

创建一个结构体类型的变量

struct Person P={"jock","guangzhou",123,'m'};  //P就是 strut Person类型的一个变量

使用结构体里面的数据
结构体使用.点语法调用里面的成员变量

printf("P的名字是%s,手机号是%d\n",P.name,P.phone);
struct Student
  {
    char name[20];
    int num;
    float score;
  };
struct Student S={"xiaoming",001,98.5};
printf("学生姓名是%s,学号是%d,分数是%f\n",S.name,S.num,S.score);

typedef 类型重命名(只能对类型重新定义)

就相当于给原类型(如 int)起了个别名(如 Myint),需要被定义的类型写在前面,自定义的类型写在后面

int a=3;
typedef int Myint;
Myint b=4;
printf("b=%d\n",b);
typedef struct Person sP;
sP p1={"marry","HK",123,'w'};
printf("姓名是%s\n",p1.name);

练习:利用 typedef 重新定义结构体

#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
  typedef struct Student1
    {
      char name[20];
      int num;
      float score;
    }sS;
  
  sS S1={"锐雯",1,100.00};
  sS S2={"艾克",2,75.5};
  sS S3={"提莫",3,32.5};
  
  if(S1.score>S2.score&&S1.score>S3.score)
    {
      printf("成绩最高的人是%s\n",S1.name);
    }
  else if(S2.score>S1.score&&S2.score>S3.score)
    {
      printf("成绩最高的人是%s\n",S2.name);
    }
  else
    {
      printf("成绩最高的人是%s\n",S3.name);
    }
  return 0;
}
运行结果

结构体的内存字节数

1、结构体在内存里面的储存单位,按照其成员变量里面最大的来开辟
2、结构体的字节对齐,是以数据类型在内存里面占多少个字节作为对齐方式的

#include "stdafx.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
  struct Student
    {
      double f;
      float height;     
      int num;
      char name[5];
      char sex;
    };
  struct Student s={98};
  printf("s在内存里面占的字节数为%d\n",sizeof(struct Student));
  return 0;
}
运行结果
End of File

行文过程中出现错误或不妥之处在所难免,希望大家能够给予指正,以免误导更多人,最后,如果你觉得我的文章写的还不错,希望能够点一下喜欢关注,为了我能早日成为简书签约作者献上一发助攻吧,谢谢!^ ^

相关文章

  • C_08 结构体

    结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成...

  • 结构体

    [toc] 结构体的定义方式 先定义结构体类型,再定义结构体变量 定义结构体类型的同时定义结构体变量 定义结构体类...

  • 【C语言笔记】<十九>结构体

    结构体的基本概念 结构体初始化 结构体的内存存储细节 结构体定义的方式 结构体类型的作用域 指向结构体的指针 结构...

  • C结构体和链表

    一,结构体变量定义及初始化 二,无名结构体 备注:无名结构体很少使用 三,宏定义结构体 四,结构体嵌套 五,结构体...

  • 结构体

    结构体定义* 结构体中的格式:* struch 结构体名* {* 结构体成员变量* }* 结构体中的特点* 1.结...

  • 结构体数组的定义

    结构体数组的定义 1、先定义结构体类型,再定义结构体数组 2、定义结构体类型的同时定义结构体数组 3、省略结构体类...

  • C#结构体,析构方法,跨程序访问

    结构体 结构体定义 结构体的语法格式: struct + 结构体名 { 结构体成员变量(相当于类中的字段) } 结...

  • 结构体

    结构体有名定义 无名定义 结构体嵌套定义 结构体内存对齐 结构体成员初始化 结构体变量引用 结构体的有名定义:直白...

  • 菜鸡学Swift3.0 13.结构体

    结构体 struct 是值类型 1.定义结构体 struct 结构体类型 { var 结构体属性:类型 ...} ...

  • 结构体

    结构体初识 结构体指针 结构体的匿名字段 结构体嵌套 Go语言中的OOP

网友评论

    本文标题:C_08 结构体

    本文链接:https://www.haomeiwen.com/subject/ijehbttx.html