C语言结构体定义、赋值举例

结构体是一种特殊的数据类型,它可以将很多数据类型打包,然后只要操作该结构体的指针变量便可以轻松的访问该结构体内其他的数据。

举例如下:

struct student

{

CHAR NAME[8];

int age;

CHAR depart[20];

float grade;

}freshman ;

student是结构名,大括号内为该结构体打包的数据类型。如果定义 struct student *p=freshman.NAME,则引用变量p可以指向结构体*p的存储空间首地址。

①成员运算符“.”运行级别高于“*”,所以*p.NAME表示*(p.NAME)。

②定义结构体要在末尾加“;”。

例:简单的机构体赋值和应用

#include <stdio.h>

int main()

{   //定义一个结构体a;

struct student

{     

CHAR NAME[8];

int age;

CHAR sex[4];

CHAR depart[20];

float grade1,grade2,grade3;

}a;

printf("\nNAME:");      //输入结构体a中的成员NAME,接着打印到终端

scanf("%s", a.NAME);    此处引用的方式是:结构体变量.成员名

printf("\n%s\n",a.NAME);

return 0;

}

例:定义结构体数组,调用结构体内数据

结构体数组的成员有三种访问方式:

①结构体变量.成员名

②(*结构体指针变量).成员名

③结构体指针变量->成员

#include <stdio.h>

struct stu     //定义结构体数组及结构体的初始化

{

int num;

CHAR *NAME;

CHAR sex;

float score;

}pupil[5]={

{101,"Tom",'M',45.8},

{102,"Mike",'M',62.5},

{103,"Chris",'F',92.5},

{104,"Rose",'F',87.6},

{105,"Nate",'M',58.8}

};

void avg(struct stu *ps)   //声明无返回值的函数avg,定义其参数是一个结构体指针变量。

{

int c=0,i;       //定义两个整型c,i;

float ave,s=0;   //定义两个浮点型变量ave,s

for(i=0;i<5;i++,ps++)              // i表示循环的次数 

{

s+=ps->score;              //s表示学生成绩的和

if(ps->score<60) c+=1;     //c表示不及格的学生数数目

}

printf("s=%.3f\n",s);                //打印学生成绩的和

ave=s/5;                            //ave计算学生的平均成绩

printf("average=%.3f\ncount=%d\n",ave,c);

}

int main()

{

struct stu *ps;     //定义结构体变量*ps         目的是在内存空间中取一个连续的栈空间,大小是sizeof( struct stu),并将内存的首地址赋值给ps

ps=pupil;           //将pupil的地址赋值给ps       将ps的指向定位到具体的结构体数据头处,即给*ps赋值操作,将数据连续写入内存的栈空间中  

avg(ps);            //将ps赋值,调用函数avg

return 0;           //返回mian函数开始执行处

}

结构体指针变量做函数参数的好处:直接减少压栈次数,效率比多次压栈效率高,调用方便。


(2012-03-22,文章来源:http://pda.c114.net/501/a472968.html


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值