用指针访问结构数组
Posted 天“码”行空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用指针访问结构数组相关的知识,希望对你有一定的参考价值。
前面我们已经学习过结构指针和结构数组的概念,我们知道可以用指针访问和引用数组,由此可知也可以用指针访问结构数组。即一个指针变量可以访问普通的数组,也可以访问结构数组。
typedef struct student
char ID[10];
char name;
char sex;
float score;
STUDENT;
STUDENT stu[30] =
"202001","张三",'M',85,
"202002","李四",'M',90,
"202003","王五",'M',95,
"202004","赵六",'F',100
;
如上述程序,已经声明了一个具有30个元素的结构数组stu,则定义一个结构指针p并将其指向结构数组stu首元素的方法为:STUDENT *p = stu;或者STUDENT *p; p = &stu[0];//p保存的是stu[0]的地址,故p指向stu的第一个元素stu[0]的首地址。因此,可以用指向运算符来引用此结构成员。p->name即stu[0].name,而p+1指向stu[1],以此类推。
如果p的初值为指向数组的首元素,则p增1后p指向下一个元素的起始地址。
//用结构指针访问数组成员
#include<stdio.h>
typedef struct student
char ID[10];
char name;
char sex;
float score;
STUDENT;
int main(void)
STUDENT stu[4] =
"202001","张三",'M',85,
"202002","李四",'M',90,
"202003","王五",'M',95,
"202004","赵六",'F',100
;
STUDENT *p;
for(p = stu; p < stu+4; p++)
printf("address of p is :%d\\n", p);
printf("%s %s %c %.1f\\n", p->ID, p->name, p->sex, p->score);
printf("\\n");
return 0;
首先,程序声明并初始化了一个STUDENT结构类型的名为stu的数组。然后定义一个名为p的结构指针,用于指向stu的首元素。接着使用一个for循环输出所有元素,该循环每次迭代时,都将数组元素的指针递增。
以上是关于用指针访问结构数组的主要内容,如果未能解决你的问题,请参考以下文章