C语言中的结构体。

这篇博客我想将一下C语言中的结构体。

对于结构体的概念性问题这里博主不再过多阐述,我们还是用代码说话。

//结构体的语法  这是C语言中的规则
struct 结构体名{
    类型名  变量名
};

//我们可以写一个简单的结构体
struct STUDENT{
    char name[10];
    int age;
};
//在这里我们要明白一个事情,C语言中结构体成员变量一般来说应该从定义的由大至小存放,
//比如上面的例子我们是将name放在了前面,age放在后,如果调换位置会造成内存空间的浪费。

//学会typedef关键字来给变量起别名,下面我们再举个例子
typedef struct TEACHER{
    char name[10];
    int age;
}Teacher, *TeaCher;
//typedef就给struct TEACHER这个结构体起了别名叫Teacher,特别要说明的是*TeaCher,
//他是怎么用的呢?我们再写一段代码
main()
{
    //我们把它写在主函数里面,这里的p1和p2实则是等价的,
    //为了方便我们使用结构体变量作为函数参数时使用,
    Teacher *p1;
    TeaCher p2;
}
//如要在主函数中调用函数,改变结构体成员的值,如果用Teacher,我们需使用二级指针,
//而使用TeaCher 就像C语言基本成员变量int等类型一样,更容易我们的理解.

//我们再写一段代码
void fun1( Teacher *p1,Teacher *p2){};
void fun2(int a, int b){};
//这里的fun1和fun2效果等价,比如我们要通过在主函数中通过函数调用改变值,通过上面两种传参是无效的

//我们可以写成这样
void fun3( TeaCher *p1,TeaCher *p2){}; 
//类比一下 void fun(int* a, int *b){};

//或者使用二级指针
void fun4( Teacher **p1,Teacher **p2){};
//fun3和fun4都能实现相同的效果,但是fun3是不是看起来更容易一点呢?

我们再说一下结构体的使用问题,比如调用开辟等。

//我们首先定义一个结构体
typedef struct HUMAN{
    char name[10];
    int age;
    char sex[2];
}Human;

int main()
{
    //我们可以在栈中定义一个结构体变量
    Human h1;
    //我们也可以开辟一个数组
    Human h2[4];
    //我们可以在堆中定义一个结构体变量,这里我们再使用HuMan创建
    Human *h3 =(Human *)malloc(sizeof(struct HUMAN));
}

今天就写这么多吧,如果对代码中有不理解的地方,欢迎在下方留言。感谢大家观看,本文章纯属个人原创,如有雷同,纯属巧合。如转载请说明出处。

猜你喜欢

转载自blog.csdn.net/qq_29342297/article/details/83271346