13.5.3 用指针处理结构数组

13.5.3 用指针处理结构数组 - 51CTO.COM

13.5.3 用指针处理结构数组

2009-06-04 14:32 戴建华 电子工业出版社 我要评论(0) 字号:T | T

综合评级:

想读(0)   在读(1)   已读(4)    品书斋鉴(0)    已有5人发表书评

《C语言开发技术详解》第13章结构、联合和枚举,在C语言中,数据类型可分为基本数据类型和构造数据类型。构造类型中的数组已在第9章中介绍了。本章将介绍另外两种构造类型:结构、联合。本节为大家介绍用指针处理结构数组。

AD:

13.5.3 用指针处理结构数组

结构指针可以指向结构变量,当然也可以指向结构数组。与指针指向其他类型的数组一样,用指针可以方便地遍历结构数组中的每一个数组元素。

可以将结构数组的第1个元素的地址赋值给结构指针变量,因为数组名表示数组的首地址,因此,也可将数组名赋值给结构指针变量。例如,在程序中,有以下代码:

struct minneed needs[N];
struct minned *pneed;

则可以使用以下代码将结构数组的首地址保存到结构指针变量pneed中:

 pneed=needs;

以下形式与此等价:

pneed=&needs[0];

当结构指针变量pneed指向结构数组后,就可使用该指针变量处理结构数组中的一个元素,如果要访问结构数组中的下一个元素,可使指针变量pneed自增1即可,即:

pneed++;

与指向其他数据类型的指针相同,当指针自增1时,相当于执行以下语句:

pneed=pneed+sizeof(minneed);

即指针变量将指向下一个结构的起始位置,如图13-8所示。

(点击查看大图)图13-8 结构指针自增运算

下面的程序通过结构指针遍历结构数组,将结构数组中各元素的值输出到屏幕上。

【程序13-5】用指针处理结构数组示例

1: #include
2: #define N 4
3:
4: struct minneed
5: {
6:     char *name;
7:     char sex;
8:     unsigned short age;
9:     float amount;
10: };
11:
12: int main()
13: {
14:     struct minneed needs[N]=
15:     {{"zhangjun",1,55,150.0},
16:      {"wumei",0,48,130.0},
17:      {"duli",0,55,180.0},
18:      {"liping",1,56,150.0}
19:     };
20:     struct minneed *pneed;
21:     pneed=needs;
22:     int i;
23:
24:     for(i=1;i

以上程序的第4~10行为定义结构类型,第14~19行初始化结构数组,与前面的程序相同。

第20行定义一个类型为struct minneed的结构指针变量。

第21行将结构数组的首地址保存到结构指针变量pneed中。

第24~31行通过一个循环,逐个输出结构数组中每个元素的值。在26~29行的printf函数中,使用结构指针变量pneed访问结构数组元素中各成员的值。当输出完一个元素中各成员的值后,执行第30行中的指针变量自增操作,使结构指针变量pneed指向下一个数组元素。这样循环操作,即可将数组中各元素的值都输出。最后,结构指针变量将指向结构数组之外(后面)的一个地址。

posted on 2012-07-06 09:21 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/07/06/2578862.html

13.5.3 用指针处理结构数组相关推荐

  1. 对C语言 结构数组 指向结构变量的指针 指向结构数组的指针

    一.结构数组的定义 数组的元素可以是结构类型的.结构数组的每一个元素都是具有相同的结构类型的下标结构变量.在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体. 如:一个班的学生的档案,一个车 ...

  2. C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 C++课程安排 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1. ...

  3. C语言基础1:初识C语言(转义、注释;数组、操作符、反码、补码、static、define、指针、结构体常变量;局部变量;作用域、生命周期)

    文章目录 C语言基础1:初识C语言 1.C语言简介 1.1什么是C语言 1.2C语言的发展 2.第一个C语言程序 2.1创建项目 2.2添加源文件 2.3写代码 3.数据类型 4.变量.常量 4.1定 ...

  4. C++结构体 结构体定义和使用、结构体数组、结构体指针、结构体嵌套结构体、结构体做函数参数

    C++结构体 第二章 C++结构体 1.结构体定义和使用 语法:struct 结构体名 { 结构体成员列表 }: 通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体 ...

  5. 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...

  6. c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...

    结构体中,字符串选项是用字符数组表示好,还是用字符指针表示好? typedef struct person{ char *name; int age; char sex[6]; }: 该结构体中nam ...

  7. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针

    指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...

  8. C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用)

    C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,const变量使用) 目录 C++结构体(结构体创建,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数, ...

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

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

最新文章

  1. 博客园 cnblogs博客添加Google Analytics统计
  2. 华为交换机路由器常用命令
  3. WinDbg的cmdtree命令
  4. windows服务器双网卡链路聚合_基于windows server 2012的多网卡链路聚合实验设计与......
  5. GetClientRect()和GetWindowRect()
  6. PHP-CPP开发扩展(五)
  7. ptyhon中文本挖掘精简版
  8. CombineFileInputFormat 文件分片总结
  9. 5G多输入多输出技术,到底是个啥东东?
  10. 因为简单!我的第一本算法书,就被女友抢走了……
  11. 自己在总结前人经验下弄的几个opencv封装函数
  12. URI和URL、URN的区别
  13. 《寒江独钓》的作者教您如何高效阅读本书
  14. 固态硬盘故障检测_固态硬盘有坏道怎么办(ssd坏块检测工具)
  15. vue项目引入三方字体
  16. linux查看进程占用连接数,Linux命令排查线上问题常用的几个
  17. 配置Eclipse for Java 9
  18. Spire.PDF帮你高效搞定PDF打印
  19. 手机蓝牙绑定pc,离开电脑自动锁屏
  20. win8下tomcat配置

热门文章

  1. python多进程共享内存_python 进程间通信 共享内存
  2. MySQL 启动报 :“发生系统错误 193. *** 不是有效的Win32 应用程序”解决方法
  3. OpenCV Using Python——构造方向可控金字塔
  4. 安卓高德地图-(定位+离线UI组件自定义1)
  5. Android webview处理404 500 断网 timeout页面的问题(by 星空武哥)
  6. DevStudio · 云端开发平台
  7. matlab坐标刻度调整SimWe仿真论坛
  8. CSRF-看似不重要实则是非常危险的,你中招了嘛?攻击与防御
  9. Nginx+Tomcat集群部署
  10. 期货交易入门知识有哪些?