结构体

一、结构体的定义
当需要不同类型的数据来构成一个整体时就需要用到结构体。
结构体内部的元素,也就是组成成分,一把称为"成员"。
注:结构体只有属性,没有方法
结构体一般定义形式1
 //不分配内存
struct 结构体名 {
类型名1       成员名1;
类型名2       成员名2;
.....
类型名n      成员名n;
};                      
//定义结构体变量名,这时候分配内存
struct   结构体名   结构体变量名;


结构体一般定义形式2
struct 结构体名 {
类型名1       成员名1;
类型名2       成员名2;
.....
类型名n      成员名n;
}   结构体变量名;


结构体一般定义形式3
//没有结构体名
struct  {
类型名1     成员名1;
类型名2     成员名2;
.....
类型名n    成员名n;
}  结构体变量名;

注意:
1、结构体不允许对结构体本省进行递归。
例如 
struct   Student {
int age ;
struct Student stu;
};       //错误做法
2、结构体可以包含别热结构体
例如 
struct Gun {
int   bulletCount;
int  range;
}
struct weapon{
char *name;
struct Gun handGun;
};
3、结构体初始化
//正确地做法
struct 结构体名 变量 = {成员1的值,...  ,成员n的值};  
//错误的做法
struct 结构体名 变量;
变量 = {成员1的值,...  ,成员n的值}; 

二、结构体数组
定义形式一:
struct 结构体名 {
类型名1     成员名1;
类型名2     成员名2;
.....
类型名n    成员名n;
};               
struct   结构体名  结构体数组名[n];

定义形式二:
struct 结构体名 {
类型名1     成员名1;
类型名2     成员名2;
}    结构体数组名[n];

定义形式三:
struct  {
类型名1     成员名1;
类型名2     成员名2;
}    结构体数组名[n];

三、结构体作为函数参数
将结构体变量作为函数参数传递时,其实传递的是全部成员的值,也就是就爱那个实参中成员得知一一赋值给对应的形参成员。因此形参的改变不会影响到实参。


四、指向结构体的指针
*  每个结构体都有自己的存储空间和地址,因此指针也可以指向结构体变量
*  结构体指针变量定义形式:struct 结构体名 *指针变量名;
*  有了指向结构体的指针,那么就有三种访问结构体成员的方式:
  • 结构体变量名.成员名;
  • (*指针变量名).成员名;
  • 指针变量名-> 成员名;
五、结构体指针作为函数参数
将结构体指针变量作为函数参数传递时,传递的是指针指向的结构体变量的地址,因此会改变实参的值。
程序:结构体

运行结果:结构体

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值