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';
 }
 
 
 
 
 
 
 

C语言之结构体概述的更多相关文章

  1. Go语言中结构体的使用-第2部分OOP

    1 概述 结构体的基本语法请参见:Go语言中结构体的使用-第1部分结构体.结构体除了是一个复合数据之外,还用来做面向对象编程.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性. ...

  2. Go语言中结构体的使用-第1部分结构体

    1 概述 结构体是由成员构成的复合类型.Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性.结构体成员,也可称之为成员变量,字段,属性.属性要满足唯一性.结构体的概念在软件工程上 ...

  3. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  4. C语言的结构体和C++结构体的区别

    关于C++中声明结构体中需要使用构造器创建实例对象的语法: <C++的结构体构造方法的基本概念:结构体的构造方法需要和结构体的名字相同,并且无返回值,也不要void关键字,这样的方法就是构造器的 ...

  5. 01.C语言关于结构体的学习笔记

    我对于学习的C语言的结构体做一个小的学习总结,总结如下: 结构体:structure 结构体是一种用户自己建立的数据类型,由不同类型数据组成的组合型的数据结构.在其他高级语言中称为记录(record) ...

  6. C语言中结构体对齐问题

    C语言中结构体对齐问题 收藏 关于C语言中的结构体对齐问题 1,比如: struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B; ...

  7. 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式

    逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...

  8. C语言中结构体赋值问题的讨论(转载)

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  9. go语言学习-结构体

    结构体 go语言中的结构体,是一种复合类型,有一组属性构成,这些属性被称为字段.结构体也是值类型,可以使用new来创建. 定义: type name struct { field1 type1 fie ...

随机推荐

  1. python笔记10

    今日内容 参数 作用域 函数嵌套 知识点回顾 函数基本结果 def func(name,age,email): # 函数体(保持缩进一致) a = 123 print(a) return 1111#函 ...

  2. Tcp 3次握手 4次挥手

    Tcp 3次握手 4次挥手 标签(空格分隔): Java基础 报文介绍: SYN(synchronous建立联机) ACK(acknowledgement 确认) FIN(finish结束) PSH( ...

  3. Linux间传输文件 scp

    scp scp使用ssh来传输数据,使用相同的认证方式,所以配置好ssh后,根据用户名和密码来读写远程文件.基本命令如下,输完命令,回车,输入远程用户对应的密码: 从本机复制到远程: 文件:scp F ...

  4. [BJDCTF2020]EasySearch

    0x00 知识点 Apache SSI 远程命令执行漏洞 链接: https://www.cnblogs.com/yuzly/p/11226439.html 当目标服务器开启了SSI与CGI支持,我们 ...

  5. python --- unittest如何传cookies

    1. #将CookieJar转为字典: cookies = requests.utils.dict_from_cookiejar(r.cookies) #将字典转为CookieJar: cookies ...

  6. 适配器之SimpleAdapter

    前言: 在写适配器时,SimpleAdapter会经常使用到,虽然他比ArrayAdapter复杂,但是也提供了更多的功能 正文: 我们接下来先从SimpleAdapter中较为简单的显示两行文本开始 ...

  7. iptable实现端口转发

    利用iptables的规则来实现端口转发: 第一步需要将内核参数的net.ipv4.ip_forward=1 场景一:实现本地端口转发 本地端口转发实在PREROUTING链中将端口做NAT转换: # ...

  8. QT事件处理–notify()

    转载至:https://www.deeplearn.me/349.html 一.说明 Qt 处理事件的方式之一:”继承 QApplication 并重新实现 notify()函数”.Qt 调用 QAp ...

  9. kNN.py源码及注释(python3.x)

    import numpy as npimport operatorfrom os import listdirdef CerateDataSet():        group = np.array( ...

  10. 133-PHP子类无法重写父类private同名函数

    <?php class father{ //定义father类 //定义protected成员方法 protected function cook(){ return 'protected co ...