• C语言之结构体概述


    C语言之结构体概述
    1、结构体类型是一种自定义类型
    (1)C语言中有2种类型:原生类型和自定义类型。
    2、结构体使用时先定义结构体类型再用类型定义变量
    (1)结构体定义时需要先定义结构体类型,再用类型来定义变量。
     struct leixing
     {
      int a;
      double b;
      char c;
     };
     struct leixing lx;
    (2)也可以在定义结构体类型的同时定义结构体变量。
     struct leixing
     {
      int a;
      double b;
      char c;
     }lx;
    注:typedef struct leixing  //将类型struct leixing重命名为lx,lx是一个类型名,不是变量
     {
      int a;
      double b;
      char c;
     }lx;
    3、从数组到结构体的进步之处
    (1)结构体可以认为是从数组发展而来的。其实数组和结构体都算是数据结构的范畴了,数组就是最简单的数据结构、
    结构体比数组更复杂一些,链表、哈希表之类的比结构体又复杂一些;二叉树、图又更复杂一些。
    (2)数组有2个明显的缺陷:第一个是定义时必须明确给出大小,且这个大小在以后不能再更改;第二个是数组要求所有的
    元素的类型必须一致。更复杂的数据结构中就致力于解决数组中的这两个缺陷。
    (3)结构体是用来解决数组中第二个缺陷的,可以将结构体理解为其中一个数组元素可以不相同的数组。结构体完全可以
    取代数组,只是在数组可用的范围内数组比结构体更简单。
    4、结构体变量中的元素如何访问?
    (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式);实质上都是指针方式访问。
    (2)结构体变量中的元素的访问方式:只有一种,用.或者是->的方式来访问。(.或者是->访问结构体元素其实质是一样的。
    只是C语言规定用结构体变量来访问元素用.   用结构体变量的指针来访问元素用->。实际上在高级语言中已经不区分了,都用.)
    (3)结构体的访问方式有点类似与数组下标的方式
    结构体变量的.或者->访问元素的实质还是用指针来访问的。
     struct student
     {
      int a;
      double b;
      char c; 
     };
     int main()
     {
      struct student s1;
      s1.a = 12;     //int *p = (int *)&s1; *p = 12;两者等价
      s1.b = 4.4;    //double *p = (double *)(&s1 + 4); *p = 4.4;
      s1.c = 'a';    //char *p = (char *)((int)&s1 + 12); *p = 'a';
     }
     
     
     
     
     
     
     
  • 相关阅读:
    生日蜡烛
    生日蜡烛
    Angular2 and Electron
    NW.js and Electron compared
    Github发布了为桌面应用开发而生的Electron 1.0版本(HTML、CSS和JavaScript)
    哈佛——教育
    国家的强大——小学教师
    (OK)(OK) Fedora23——NS3(MANETs)——Docker(busybox)——genymotion(android)——All is OK
    (OK) ns3—genymotion—android
    android——adb shell——netcfg——get IP address
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11675948.html
Copyright © 2020-2023  润新知