标签:

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进行操作

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类进行操作

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

class GPS:

pass

Data = [GPS()]*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

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

print(Data[0].px)

标签:

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

  1. python 字符串数组_python用法笔记(数组(list、touple、dict)、字符串)

    1.产生n个全为1的数组 a=[1]*n 2.字符数字转化 int('12') float('12.5') str(123.45) ASCII码转为相应的字符:chr(97) 字符转化为相应的ASCI ...

  2. python 数组_python之多维数组(一)

    Numpy中定义的最终对象是称为ndarray的N维数组类型.它描述相同类型的元素集合.可以使用基于零的索引访问集合中的项目. ndarray创建方式 array()函数 接收一个普通的python序 ...

  3. python 传参 数组_python传参为数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 python 替换字符 为 空 ...

  4. python二维数组排序_Python实现二维数组按照某行或列排序的方法【numpy lexsort】...

    本文实例讲述了Python实现二维数组按照某行或列排序的方法.分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序:是间接排序,lexsort不修改原数组,返回索引. (对 ...

  5. python去重复排序_Python实现删除排序数组中重复项的两种方法示例

    本文实例讲述了Python实现删除排序数组中重复项的两种方法.分享给大家供大家参考,具体如下: 对于给定的有序数组nums,移除数组中存在的重复数字,确保每个数字只出现一次并返回新数组的长度 注意:不 ...

  6. python输入二维数组_Python输入二维数组方法

    Python输入二维数组方法 前不久对于Python输入二维数组有些不解,今日成功尝试,记以备忘.这里以输入1-9,3*3矩阵为例 n=int(input()) line=[[0]*n]*n for ...

  7. python中遍历二维数组_python遍历二维数组-女性时尚流行美容健康娱乐mv-ida网

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 二 维 数组 5.2.1 二 ...

  8. python的对象数组_Python当中的array数组对象实例详解

    计算机为数组分配一段连续的内存,从而支持对数组随机访问: 由于项的地址在编号上是连续的,数组某一项的地址可以通过将两个值相加得出,即将数组的基本地址和项的偏移地址相加. 数组的基本地址就是数组的第一项 ...

  9. python的ctypes模块详解数组_python ctypes结构数组

    代码中的STRUCT_ARRAY应该是指向指针数组的指针,而不是指向数组中元素的指针,因为您要将STRUCT_2指针附加到数组. 在c中,STRUCT_ARRAY可以定义为* STRUCT_2 [le ...

最新文章

  1. 第十一课.DCGAN与CycleGAN
  2. C#基础篇三流程控制2
  3. 【Boost】boost库asio详解9——UDP的简单例子1
  4. 完美解决ArcGIS10.2和Erdas9.2软件冲突的方法:共存!
  5. ES6的generator
  6. chart控件支持鼠标滚轮放大缩小_强大的鼠标侧键功能设置工具:X-Mouse Button Control...
  7. 《OpenGL编程指南》 笔记一 OpenGL概述
  8. 一个简单的网页设计HTML5作业
  9. 不小心中了makop勒索病毒
  10. Focal Loss的阅读笔记
  11. DBeaver下载安装教程
  12. tadb.exe、sjk_daemon.exe导致 adb.exe启动失败
  13. echart饼图标签重叠_解决echarts中饼图标签重叠的问题
  14. Java内存管理:Java内存区域 JVM运行时数据区
  15. 2012年国内薪资最高的IT公司排行
  16. 实习心得体会之JDBC操作21090712
  17. 【帮帮】移动互联网的“浑水”
  18. Spring Boot从0开始学的个人笔记11 --安全security
  19. 美食推荐网站系统springboot+jsp
  20. 选课系统甘特图(用Excle画甘特图)

热门文章

  1. 洛谷P2955题解(Java语言描述)
  2. 使用AspectJ注解技术实现AOP功能
  3. adblock去除烦人的广告
  4. Vue学习心得记录之模板语法
  5. Node.js自定义对象事件监听与发射
  6. IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
  7. 网管分析数据包? 组合一下吧。
  8. XSL样式,分页方法
  9. SQL SERVER 2005 显示行号
  10. 出于一些原因的考虑,即日起,一步一步SharePoint 2007系列文章将暂停发布