结构体小结

来源:互联网 发布:修水县金域名都乱收费 编辑:程序博客网 时间:2024/06/05 15:05

结构体小结:

1.首先是对于结构体的定义,如果只有一个结构体的话,应用的话相对来说比较简单,但是,如果一个结构体的成员引用其他的结构体的话,记忆就容易出现混乱,例如:

struct date

{

int    day;

int mouth;

int year; 

};

struct studet

{

int num;

struct  date.year;//这个是今天定义结构体时思维出现的混乱,和引用混在了一起,正确的是    struct date birthday;

};

这是在用的时候容易出现的问题,而且在定义时,一定要记得结构体定义结束时,加“;”,幸好这个会报错,不然找起来很难找。

2.对结构体成员进行初始值得时候,如果是初始化字符串,一定要记得加    “ ”    ,好吧,这个也是细节问题。

3.结构体变量整体做函数的参数,在函数的调用过程中,是进行值传递;

4.对于共用体,结构体为他分配的空间是他一个成员所占内存的最大空间,结构体则是成员所占的内存中和。

5.对于枚举类型,枚举常量所表示的是整数类型;

enum weekday{sun,mon,tus,wen,thu,fri,sat};

                          0      1      2     3     4   5   6

给初始值时,默认从0给,每次加1,但如果人为的改变了其值,后面的值就会随之发生改变;

enum weekday{sun,mon=5,tus,wen,thu,fri,sat};

                           0      5        6     7     8    9    10

枚举类型一般不能直接输入或者输出,输入一般枚举常量(整数)进行转换,输出则一般通过switch 语句以字符串的方式进行;

6.一般而言,每次对结构体进行引用时,都要写  struct +类型名,比较烦啊,这个时候,可以用重命名,使用typedef,相当的好用阿,而且在写稍微大型的程序时,是相当的方便的;

但应该注意的是:typedef 是仅给已有的类型名进行重新的命名,但并不产生新的的数据类型;

7.结构体指针用的比较多,但是我觉得结构体学会定义就好,主要是在链表用。。。。

8,值得一提的是,

typedef struct date

{

int    day;

int mouth;

int year; 

}DATE,*STU;

在这个STU的应用,有时候还是蛮吊的,例如在链表的排序时,

typedef struct infor
{
 char num[20];
 char name[30];
 char add[50];
 struct infor *next;
}INFO;
typedef struct infor1
{
 char num[20];
 char name[30];
 char add[50];
}INFO1,*stu;

STUINFO *sort(INFO *phead)
{
 INFO *p1,*p2;
 INFO1 *m1,*m2;
 INFO1 t;
 for(p1=phead;p1!=NULL;p1=p1->next)
 {
  
  for(p2=p1->next;p2!=NULL;p2=p2->next)
   if(strcmp(p1->num, p2->num) > 0)
   {
    
    m1=(stu)p1;
    m2=(stu)p2; 
    t=*m1;
    *m1=*m2;
    *m2=t;
   
   }
 }
 print (phead);
 return (phead);

 例 stu 2与struct date *stu2 性质是一样的,用处还是蛮流弊的。

结构体就总结到这里;



0 0
原创粉丝点击