复习c结构体

来源:互联网 发布:win10 uefi 安装Ubuntu 编辑:程序博客网 时间:2024/06/03 21:31

首先结构体是一种类型,虽然以前老师也说过,但当时只是脑子中的一种印象而已,现在通过敲程序,有了更加深透的理解。其实它就是一种类型而已,就和int char 没神魔两样,只是自己难以一时接受,慢慢吸收就好了。

下面把主要的知识点简练的总结一下:

一.定义结构体变量:

struct book{char a[4];double b[4];}m1,*p,axx[4];

struct book是自己写的一个复杂结构变量,它也可以和基本类型一样 被定义成 普通变量,指针,数组等等。

二.结构体的初始化:

struct book m1={"a b","3.3 4.4"};

或直接全为零:

struct book m1={0};

当然还有 结构体的初始化器。

三.结构体数组:

创建结构体数组时,其中信息被储存在栈中(stack),如果出现错误,可能栈太小或溢出,所以可以把栈设置的大或创建静态或外部数组;

四.结构体指针:

1.

struct guy *him; 声明了一个结构体指针,但是并没有创建一个新的类型,现在mn是一个guy类型的结构体,可以把结构体指针指向它。

him=&mn;

            a是 结构 mn中  一个变量时,可以这样访问。

            mn.a==him->a==(*him).a       //him=&mn;

2.向函数传递结构体信息(即参数)

   这里的内容是我掌握最模糊的之一。

传成员:

#include<stdio.h>struct fund{double save;double savefund;};double sum(double , double);int main(){double m=0;struct fund stan ={4.4,5.5};printf("%lf\n,%lf\n",stan.save,stan.savefund);m=sum(stan.save,stan.savefund);//这只是传了形参。如果修改函数中的值,必须传成员地址:sun(&stan.save,&stan.savefund);或用指针。printf("%lf\n",m);return 0;}double sum(double x,double y)       {x+y;return (x+y);}



传结构地址:



#include<stdio.h>#define FUNDLEN 50struct funds{char bank[FUNDLEN];double bankfund;char save[FUNDLEN];double savefund;};double sum(const struct funds *);//  这里表示 参数是一个指针(你需要向里面传一个funds类型 的指针变量)int main(){struct funds stan={"Garlic-Melon Bank",4032.27,"Lucky's Saving and Loan",8543.94};printf("%.2f\n",sum(&stan));return 0;}/*sum()函数使用funds类型的指针作为它的参数,是地址传递,其中const 使函数不能改变指针所指向值的内容。*//* 注意的是 必须用&来获取地址 */double sum(const struct funds * money ){return (money->bankfund + money->savefund);}

再用2到3天空闲时间复习或重学习指针,指针可以说是我的一个头疼点,加油。

如果对指针理解不够  就多学几天。

希望自己每天都写写博客,去促进自己学习,能够督促自己,每一天都能进步一点,通过自己的努力可以改变一点是一点。

真的,希望自己四年大学不要等吃混死。




原创粉丝点击