结构体

1.注意事项:

1.1在声明后一定要叫;,结构体类型声明在主函数之前,工作中一般声明放在头文件中

1.2结构体初始化只能在一开始定义,如已经定义了,只能对成员单个进行赋值。

1.3通过 结构体变量名.成员名来访问结构体成员

1.4输入  使用scanf输入只能是对各成员取地址,而且字符%c不会忽略空格,故要在前面加一个空格,即   %c才能实现正确输入

2.初始化、定义、结构体指针

#include<stdio.h>
#include<stdlib.h>
struct student{
int num;
char name [20];
float grade;
};
int main(){
struct student s={1001,"zhangsan",99.9};
struct student arr[3];
struct student *p;
int i;
int num;
p=&s;
printf ("%d  %s  %.2f\n",p->num  ,p->name ,p->grade);
puts("___________________________");
for(i=0;i<3;i++){
scanf ("%d  %s  %f",&arr[i].num ,&arr[i].name ,&arr[i].grade );
}
puts("___________________________");
for(i=0;i<3;i++){
printf ("%d  %s  %.2f\n",arr[i].num  ,arr[i].name ,arr[i].grade );
}
puts("___________________________");
p=arr;
       printf ("%d  %s  %.2f\n",(*p).num  ,p->name ,arr[0].grade );//三种输出方式
//.号成员选择的优先级要比解引用*高,故加括号
//该方式只能打印arr[0]的值
//打印别的方式 (*(p+n)).或p+n->
puts("___________________________");
num=p->num ++;
printf("num=%d p->num=%d p=%p\n",num,p->num,p );//1001,1001+1 地址1
num=p++->num;
printf("num=%d p->num=%d p=%p\n",num,p->num,p);//1002,下一个num,偏移一个地址
system ("pause");
return 0;

}

3.typedef的使用:

    #include<stdio.h>
#include<stdlib.h>

typedef struct student{
int num;
char name [20];
float grade;
}stu,*pstu;
int main(){
stu s={1000,"zhangsan",99.8};
pstu p;
p=&s;
printf("%d  %s  %.2f\n",p->num ,(*p).name ,s.grade );
system ("pause");
return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值