打印
[DSP编程]

C语言之结构体概述

[复制链接]
828|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-11-24 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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';

}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1820

帖子

18

粉丝