怎么用指针实现结构体指针数组数组的输入与输出

C语言的函数数组指针结构体知识_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言的函数数组指针结构体知识
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢博客访问: 216608
博文数量: 108
博客积分: 3265
博客等级: 中校
技术积分: 1197
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
//对指向结构体类型变量的正确使用。输入一个结构体类型变量的成员,并输出。
/*使用malloc()需要* /
struct data / *定义结构体* /
&& int day,month,
struct stu /*定义结构体* /
&&& char name[20];
/嵌*套的结构体类型成员*/
main() /*定义m a i n ( ) 函数* /
&&&& struct stu * 定/*义结构体类型指针*/
& & &student=malloc(sizeof(struct stu)); 为/指* 针变量分配安全的地址*/
&&&& printf("Input name,number,year,month,day:\n");
&&&& scanf("%s",student->name); 输/*入学生姓名、学号、出生年月日*/
&&&& scanf("%ld",&student->num);
&&&& scanf("%d%d%d",&student->birthday.year,&student->birthday.month,
&&&& &student->birthday.day);
&&&& printf("\nOutputname,number,year,month,day\n");
&&&& /*打印输出各成员项的值*/
&&&& printf("%20s%10ld%10d//%d//%d\n",student->name,student->num,
&&&& student->birthday.year,student->birthday.month,
&&&& student->birthday.day);
程序中使用结构体类型指针引用结构体变量的成员,需要通过C提供的函数malloc()来为指针分配安全的地址。函数sizeof()返回值是计算给定数据类型所占内存的字节数。指针所指各成员形式为:
student->name
student->num
student->birthday.year
student->birthday.month
student->birthday.day
===============================
struct data
&&& intday,month,
struct stu/*定义结构体*/
&&& char name[20];
&&& /嵌*套的结构体类型成员*/
struct stu student[4],*p;定/*义结构体数组及指向结构体类型的指针*/
作p=student,此时指针p就指向了结构体数组student。
p是指向一维结构体数组的指针,对数组元素的引用可采用三种方法。
student+i和p+i均表示数组第i个元素的地址,数组元素各成员的引用形式为:
(student+i)->name、(student+i)->num和(p+i)->name、(p+i)->num等。student+i和p+i
与&student[i]意义相同。
若p指向数组的某一个元素,则p++就指向其后续元素。
3)指针的数组表示法
若p=student,我们说指针p指向数组student,p[i]表示数组的第i个元素,其效果与
student[i]等同。对数组成员的引用描述为:p[i].name、p[i].num等。
//程序示例:
structdata/*定义结构体类型*/
&&&& intday,month,
structstu/*定义结构体类型*/
&&&& char name[20];
&&&& structstu*p,student[4]=
&&&&&&&& {"liying",1,},
&&&&&&&& {"wangping",2,},
&&&&&&&& {"libo",3,},
&&&&&&&& {"xuyan",4,}
/*定义结构体数组并初始化*/
&&&& p=/*将数组的首地址赋值给指针p,p指向了一维数组student*/
&&&& printf("\n1----Outputname,number,year,month,day\n");
&&&& for(i=0;i<4;i++)/*采用指针法输出数组元素的各成员*/
&&&& printf("%20s%10ld%10d//%d//%d\n",(p+i)->name,(p+i)->num,
&&&& (p+i)->birthday.year,(p+i)->birthday.month,
&&&& (p+i)->birthday.day);
//结构指针变量作函数参数
struct stu
&&&& char *
&&&& char ***;
&&&&&{101,"Li ping",'M',45},
&&&& {102,"Zhang ping",'M',62.5},
&&&& {103,"He fang",'F',92.5},
&&&& {104,"Cheng ling",'F',87},
&&&& {105,"Wang ming",'M',58},
&&&& struct stu *
&&&& void ave(struct stu *ps);
&&&& ave(ps);
void ave(struct stu *ps)
&&&& int c=0,i;
&&&& float ave,s=0;
&&&& for(i=0;i<5;i++,ps++)
&&&&&&&&&& s+=ps->
&&&&&&&&&& if(ps->score<60) c+=1;
&&&& printf("s=%f\n",s);
&&&& ave=s/5;
&&&& printf("average=%f\ncount=%d\n",ave,c);
测试环境:VC++6.0
输出结果:
s=345.000000
average=69.000000
Press any key to continue
阅读(16853) | 评论(1) | 转发(3) |
相关热门文章
给主人留下些什么吧!~~
为什么不给malloc强制转化为stu?struct&stu&*&定/*义结构体类型指针*/&&&&&&student=malloc(sizeof(struct&stu));&为/指*&针变量分配安全的地址*/
请登录后评论。

我要回帖

更多关于 用指针输出数组 的文章

 

随机推荐