若在C语言中定义一个结构体数组,系统在编译时就会为结构体数组元素分配存储单元,且所有数组元素是连续存放的。
如果结构体指针存放的是结构体数组的起始地址,它就指向这个结构体数组。结构体数组中的每个元素都是相同的结构体类型,其使用方法与结构体变量相同。
例10.5 结构体指针指向结构体数组的使用方法。
编写程序:
创建一个名为“eg10_5.c”的新文件,在编辑窗口中输入下面的程序代码。
运行结果:(www.daowen.com)
程序说明:
ptStudentInfo是指向struct student结构体类型数据的指针变量。在for语句中,“ptStudentInfo = tStudentInfo;”语句使指针ptStudentInfo指向结构体数组tStudentInfo,即指针ptStudentInfo指向结构体数组tStudentInfo的起始地址,如图10-1所示。
图10-1 指针ptStudentInfo指向结构体数组tStudentInfo示意图
在第1次循环中,输出tStudentInfo [ 0 ]各个成员的值及记录条数1,然后执行ptS-tudentInfo ++,使ptStudentInfo加上1指向结构体数组tStudentInfo的下一个元素,即tStudentInfo[ 1 ]。在第2次循环中,输出tS-tudentInfo[ 1]各个成员的值及记录条数2。再次执行ptStudentInfo ++后,ptStudentInfo指向tStudentInfo [ 2 ],输出tStudentInfo [ 2 ]各个成员的值及记录条数3。接着再执行ptStudentInfo ++后,ptStudentInfo的值变为tStudentInfo + 3,不小于tStudentInfo + 3 ,退出循环。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。