首页IT科技用指针数组表示一组学生的姓名是什么(13.5.3 用指针处理结构数组)

用指针数组表示一组学生的姓名是什么(13.5.3 用指针处理结构数组)

时间2025-09-12 23:35:51分类IT科技浏览5125
导读:13.5.3 用指针处理结构数组结构指针可以指向结构变量,当然也可以指向结构数组。与指针指向其他类型的数组一样,用指针可以方便地遍历结构数组中的每一个数组元素。可以将结构数组的第1个元素的地址赋值给结构指针变量,因为数组名表示数组的首地址,因此,也可将数组名赋值给结构指针变量。例如,在程序中,有以下代码...

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: #include2: #define N 43: 4: struct minneed5: {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指向下一个数组元素                       。这样循环操作       ,即可将数组中各元素的值都输出               。最后        ,结构指针变量将指向结构数组之外(后面)的一个地址。

声明:本站所有文章                       ,如无特殊说明或标注               ,均为本站原创发布                       。任何个人或组织        ,在未征得本站同意时                       ,禁止复制                、盗用                      、采集       、发布本站内容到任何网站                、书籍等各类媒体平台                      。如若本站内容侵犯了原著者的合法权益               ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo排名技术教程(探秘SEO排名的奥秘,助你成为网络霸主!) linux虚拟内存查看(详解Linux中监控CPU与虚拟内存运行信息的命令用法)