c语言之结构体

结构体
为什么需要结构体
为了表示一些复杂的事物,而普通的基本类型无 法满足实际需求。
什么叫结构体
把一些基本类型数据组合在一起形成的一个新的复合数据类型,这个叫结构体
如何定义结构体
3种方式: 推荐使用第一种方式

//第一种方式:这只是定义了一个新的数据类型,并没有定义变量
struct Student  
{
   int age;
   float score;
   char sex;
 };
 //第二种方式
 struct Student2 
{
   int age;
   float score;
   char sex;
 } st2;//只能定义一次,不能再定义
 //第三种方式
 struct //不知道变量是什么类型
{
   int age;
   float score;
   char sex;
 } st3;

怎么使用结构体变量
赋值和初始化
1.初始化,定义的同时赋初值。
2.先定义,定义完之后只能单个赋值

int main(){
 struct Student st={80,66.6F,'F'} //初始化,定义的同时赋初值。
 struct Student st2;//定义完之后只能单个赋值
 struct Student *pst=&st;//表示pst可存放这种类型的地址
 st.age=10;
 pst->age=88;
 //在计算机内部会被转化成(*pst).age,这就是->的含义,也是一种硬性规定,所以pst->age等价于(*pst).age等价于st.age
 st2.score=88.8f;//88.8在c语言中默认是double类型,如果希望一个实数是floatl类型,则必须在末尾加f或F
 st2.sex='F';
 printf("%d %f %c\n",st2.age,st2.score,st2.sex);
}

如何取出结构体变量中的每一个成员
1.结构体变量名.成员名
2.指针变量名->成员名(常用)
结构体变量的运算
结构体变量不能相加,不能相减,也不能相乘
但结构体变量可以相互赋值
结构体变量和结构体变量指针作为函数参数传递的问题

//  结构体变量和结构体变量指针作为函数参数传递的问题 
void InputStudent(struct Student *);//函数声明
void OutputStudent(struct Student ss);
int main(){
struct Student st;
InputStudent(&st);
OutputStdent(st);
return 0;
}
/*//对stu赋值不能对st赋值,函数加载完就没有了。本函数错误
void InputStudent(struct Student stu)
{ 
  stu.age=10;
  strcpy(stu.name,"张三");//不能写成stu.name="张三";
  stu.sex='F';
}*/
void InputStudent(struct Student * pstu)//pstu只占四个字节
{ 
   (*pstu).age=10;
   strcpy(pstu->name,"张三");
   pstu->sex='F';
}
//不修改内容时可不传指针但是指针速度快,所以推荐用指针传参
void OutputStudent(struct Student ss){
   printf("%d %c %s\n",ss.age,ss.sex,ss.name);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值