C-结构体

C语言的结构体,名字听着让人惴惴然不安,但是学习了之后发现,这又有另个JS概念对应,那就是对象。好后悔没有早点开始这一章的学习!

结构体是用户自定义的类型,和Int char差不多,但是结构体有所不同,它可以包含多种类型,它是一个多种类型的结合,简称结构体。定义如下:

Stuct Contact//定义名称为Contact的结构体

{

//里面包含的成员变量

int id;

char name[16];

char phone[16];

}

使用如下:

Contact a = {12138,”wenling”,”136****0646″};

这样一个新的结构体实例就完成了。

访问实例使用.符号访问即可:

prinft_s(“id is : %d”,a.id);

结构体赋值和其它系统类型赋值不同,结构体赋值后的结果是===,内存一样,每个字节都是相同的。

结构体也可以用指针访问,一般使用->符号,而不是.符号,->访问如下:

Contact* p = &a;

printf_s(“id is : %d”,p->id);

结构体可以作为函数的参数,也可以作为函数的返回值,作为函数参数时,还是遵照我们地址访问的原则,使用指针访问,减小传递的数据大小和cpu内存。

结构体也可以作为结构体的成员,访问方式也是.符号访问。

结构体大小有时候会比成员之和要大,因为CPU或者说编译器会有字节对齐的需要,比如前两个成员是char类型,第三个成员是int类型,编译器会自动补齐第三第四字节,直到第五字节才开始int类型,所以会比成员之和要大。

期待后面的学习,期待概念相同。

发表评论

电子邮件地址不会被公开。 必填项已用*标注