C语言中结构体数组概念及定义

一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗?

很明显不可能,这时就要使用数组。结构体中也有数组,称为结构体数组。结构体数组的每一个元素都是一个结构体类型的变量,都包含结构体中所有的成员项。

定义结构体数组的方法很简单,同定义结构体变量是一样的,只不过将变量改成数组。C语言中结构体数组定义很简单,比如:

struct STU

{

char name[20];

int age;

char sex;

char num[20];

}; //定义STU结构体

struct STU stu[10]; //包含10个STU结构体类型的结构体数组

或者:

typedef struct

{

char name[20];

int age;

char sex;

char num[20];

}Student; //定义Student结构体

Student stu[10]; //包含10个Student结构体类型的结构体数组

假如需要利用python实现以下结构体数组,并且需要赋值:

typedef struct

{

char  id;

float  px;

float py;

float vx;

float  vy;

} GPS;

GPS  Data[2];

#赋值

Data[2]={{'00',1.1,1.2,1.3,1.4},{'01',2.1,2.2,2.3,2.4}}

python中结构体数组构建方法

方法一:利用NumPy进行操作

参考博客:NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

import numpy as np

GPSType=np.dtype({'names':['id','px','py','vx','vy'],'formats':['S32','f','f','f','f']})

Data=np.array([('zero',0.,0.)]*10,dtype=GPSType) #创建Data[2]

#结构体数组中成员赋值

#Data[0]

Data[0]['id']='00'

Data[0]['px']=1.1

Data[0]['py']=1.2

Data[0]['vx']=1.3

Data[0]['vy']=1.4

#Data[1]

Data[1]['id']='01'

Data[1]['px']=2.1

Data[1]['py']=2.2

Data[1]['vx']=2.3

Data[1]['vy']=2.4

方法二:利用Class类进行操作

参考博客:《原 Python:类与结构体》 中的

有时候我们可能需要像C中的struct那样的数据类型,把少量的数据项放在一起。Python中可以使用定义一个空类来实现这一点:

class GPS:

pass

Data = [GPS()]*2

Data=[GPS(),GPS()]

#Data[0]

Data[0].id='00'

Data[0].px=1.1

Data[0].py=1.2

Data[0].vx=1.3

Data[0].vy=1.4

#Data[1]

Data[1].id='01'

Data[1].px=2.1

Data[1].py=2.2

Data[1].vx=2.3

Data[1].vy=2.4

print(Data[0],Data[1])

print(Data[0].px)

python数组赋值给变量_python实现结构体数组(初始化并赋值)相关推荐

  1. python 结构体数组_python实现结构体数组(初始化并赋值)

    标签: C语言中结构体数组概念及定义 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗? 很明显不可能,这 ...

  2. c语言 结构数组读取,有关文件读写到结构体数组问题;

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 typedef struct IMG { char *name; int weight; int height; }IMG; 这是我的结构体存的是 图片的 ...

  3. 结构体数组的赋值方法(常用的三种,包含字符串)

    目录 一.按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二.对数组整体进行赋值.(一次性需要把所有的都添加进去,不需要strcpy) (1) 在声明数组的时候,进行赋值 (2)对有 ...

  4. 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 堆内存创建 )

    文章目录 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 二.完整代码示例 一.结构体 数组 作为函数参数 ( 数组 在 堆内存创建 ) 在上一篇博客 [C 语言]结构体 ( 结构体 数 ...

  5. java 结构体数组初始化_C数组结构体联合体快速初始化

    背景 C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序. C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元 ...

  6. C语言自定义数据类型(二)使用结构体数组

    一个结构体变量中可以存放一组有关联的数据(如一个学生的学号.姓名.成绩等数据).如果有 10 个学生的数据需要参加运算,显然应该用数组,这就是结构体数组.结构体数组与以前介绍过的数值型数组的不同之处在 ...

  7. 【C语言】结构体指针与结构体数组

    目录 一.结构体指针 二.结构体数组 1.结构体数组的定义 2.结构体数组的初始化 3.结构体数组的引用 4.结构体数组指针 一.结构体指针 与一般指针类似结构体也可以使用结构体指针进行引用使用.结构 ...

  8. 【单片机自学笔记】(8):c51中的复合赋值运算符,开发版上的数码管、74HC245、74HC138的使用方法,结构体数组

    / C51中的复合赋值运算符 / 变量 复合运算符 表达式 先把变量与后边的表达式进行某种运算,然后将运算的结果赋给前面的变量. +=  加法赋值     ?+  减法赋值 *=  乘法赋值      ...

  9. Matlab 结构体数组 基础知识 struct(自学文档)

    struct 结构体数组 全页展开 说明 结构体数组是使用名为字段的数据容器将相关数据组合在一起的数据类型.每个字段都可以包含任意类型的数据.可以使用 structName.fieldName 格式的 ...

最新文章

  1. Google 在印度建立 AI 实验室,致力于农业、医疗、教育
  2. 机房收费系统重构之存储过程的使用
  3. 全栈工程师的思考 | 步步进阶经验之谈
  4. vmware 虚拟机共享 windows 目录
  5. Android平台发展史
  6. html-盒子模型及pading和margin相关
  7. IE8的 JS 引擎如此不堪(二) - 解决方案
  8. mybatis的mapper接口与xml传参问题
  9. 微信发虎年新春贺词领福袋:游戏皮肤、QQ音乐VIP、现金红包等
  10. c语言类静态数据成员函数,鸡啄米:C++编程入门系列之二十一(C++程序设计必知:类的静态成员)...
  11. Android 任务栈空间,【Android】任务和返回栈(tasks and back stack)
  12. WPF--常用布局介绍
  13. runTime动态给类添加属性
  14. 一文搞懂MySQL索引(清晰明了)
  15. HDU 5810(伯努利实验、多校7、规律)
  16. 计算机常用的四种加密方法,电脑常见的几种加密方法
  17. 线性运放HCNR201-500E构成的模拟信号隔离放大电路
  18. 拼多多“百亿农研”开辟发展新路径
  19. 云计算对电子商务的应用优势
  20. Codeforces1527B1

热门文章

  1. matlab——矩阵点乘,叉乘
  2. 【优化选址】蚁群算法求解电动汽车充电站与换电站选址优化问题【含Matlab源码 1182期】
  3. 04_控制系统的复域数学模型
  4. 需求分析课程项目——第一阶段
  5. maven打包找不到程序包错误或找不到符号,但idea编译、运行都正常
  6. SQLyog无法连接mysql且不是因为未启动服务
  7. 升级glibc2.23失败系统崩溃急救
  8. NLP 学习笔记 3: Data preparation, tokenization, and filtering.
  9. c语言三种方法求n的k次方
  10. Andorid 硬件显示系统HWCHWC2架构详解