前言
大家好,我们又见面了。本章来讲讲结构体,本次只是入门篇,没什么难点,所以本篇文章内容较少,我就讲讲一些基础的东西,后面还会有结构体进阶,可以期待一下。
一.结构成员的类型
结构的成员可以是标量、数组、指针,甚至可以是结构体,如下面代码
typedef struct stu
{
int a;
char b[10];
int* p;
struct c;
}stu;
二.结构体成员的访问
结构体变量的成员是通过点操作符(.)来访问的。点操作符接受两个操作数,就如上面那串代码,我们该如何访问stu的成员名呢。看下面代码。
struct stu s;
strcpy(s.b, "abcde");
s.a = 10;
结构体指针访问指向变量的成员,有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针,这时候我们就可以通过->来访问成员。如下面代码
三.结构体传参
直接上代码吧,这个传参之前十分详细的讲过,这个就和之前那差不多。
struct stu
{
int data[1000];
int num;
};
struct stu s = { {1,2,3,4},1000 };
void print1(struct stu s)
{
printf("%d\n", s.num);
}
void print2(struct stu* ps)
{
printf("%d\n", ps->num);
}
int main()
{
print1(s);
print2(&s);
return 0;
}
传结构体好呢,还是传地址好呢?
跟之前一样,首选还是传地址,为什么呢?
原因 :函数传参的时候,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
总结
本次浅谈结构体讲到这就结束了,本文介绍了结构体传参,结构体成员的访问,和结构体类型,要记住结构体传参的时候,要传结构体的地址。都看到这了,要个点赞加关注不过分吧。