C中几种相对不常用类型 - 结构体

结构体

定义方法
struct person
{
 char name[10];
 int age;
 char sex;
};

变量定义方法
方法1:
struct person
{
 char name[10];
 int age;
 char sex;
};
struct person jim;    //定义时,前面要加struct

方法2:
struct person
{
 char name[10];
 int age;
 char sex;
}jim;           //可以在结构体定义时,同时进行变量定义
以这种方法定义时,可以使用无名结构体如下:
struct
{
 char name[10];
 int age;
 char sex;
}jim; 
这样,只能定义一个结构体变量jim。下面再需要时就无法定义了。

变量引用方法
一般结构体,jim.age
结构体指针,jim->age
要注意对其中指针变量的操作,比如name: 
struct person *tom;
strcpy(tom->name, "yfpeng");
而不能用 tom->name = "yfpeng";

结构体数组
struct person
{
 char name[10];
 int age;
 char sex;
}key[3]; 

key[0].age = 80;
与普通数组的使用相同。

结构体指针
struct person
{
 char name[10];
 int age;
 char sex;
}*tom; 

结构体指针同其它指针变量一样,要经过初始化。
tom = (struct person *)malloc(sizeof(struct person));

前面已经说过结构体指针,引用内部变量用->,其实这个符号的作用如下:
tom->age = 20;
(*tom).age = 20;
是一个取值操作,为了方便而引入了 ->

结构体的大小

sizeof(struct person)
理论上应该等于结构体内各变量加起来的大小之和。但由于内存存储方式的原因,往往得到的结果与理论不符。

结合typedef定义结构体为一个新类型
typedef struct person
{
 char name[10];
 int age;
 char sex;
}tom;
这样,tom被定义为一个新类型,其实就是struct person。这种情况下,可以使用无名结构体,不用指明person了。使用方法如下:
tom t;
t.age = 80; 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值