C语言结构体

 1 #include <stdio.h>
 2  
 3 struct student_st
 4 {
 5     char c;
 6     int score;
 7     const char *name;
 8 };
 9  
10 static void show_student(struct student_st *stu)
11 {
12     printf("c = %c, score = %d, name = %s\n", stu->c, stu->score, stu->name);
13 }
14  
15 int main(void)
16 {
17     // method 1: 按照成员声明的顺序初始化
18     struct student_st s1 = {'A', 91, "Alan"};
19     show_student(&s1);
20  
21     // method 2: 指定初始化,成员顺序可以不定,Linux 内核多采用此方式
22     struct student_st s2 = 
23     {
24         .name = "YunYun",
25         .c = 'B',
26         .score = 92,
27     };
28     show_student(&s2);
29  
30     // method 3: 指定初始化,成员顺序可以不定
31     struct student_st s3 = 
32     {
33         c: 'C',
34         score: 93,
35         name: "Wood",
36     };
37     show_student(&s3);
38      
39     return 0;
40 }

-----------------------------------------------------------------------------------------------------------------------------------------------------------

结构体数组:

  struct Student{

    char *p_name;

    char *p_address;

    int  age;

  }

 

1):   struct Student Students[100];

    Students[0]={"zhangsan","shanghai",19};

    Students[1]={.......................................};

    ...............................................................

2):  在声明结构体的时候就指定数组名和大小(大小可以不填);

  

          struct Student{

            char *p_name;

            char *p_address;

            int  age;

          }Students[100];

3):声明结构体数组就对其初始化;

struct Student{

    char *p_name;

    char *p_address;

    int  age;

  }Students[100]={{"zhangsan","shanghai",20},{"lisi","beijing",20},{"lisa","nanjing",21}..................................};

------------------------------------------------------------------------------------------------------------------------------------------------------------

对于结构体变量的定义

1):

struct Student{

    char *p_name;

    char *p_address;

    int  age;

  }student1,student2;

2):

struct Student{

    char *p_name;

    char *p_address;

    int  age;

  };

struct Student student1={"linda","上海",20};

struct student student2;

student2=student1;    //相同结构体的变量可以直接复制

--------------------------------------------------------------------------------------------------------------------------------------------------------------

指向结构体变量的指针

struct strudent S1;

struct strudent *p;

p=&S1;

(*p)  就是相当于S1;

假如S1.name="linda";

则:   (*p).name="linda";

或    p->name="linda";

 

C语言为了简便:(*p).name  可以简化为 p->name;  ->  为指向运算符。

----------------------------------------------------------------------------------------------------------------------------------------------------------

指向结构体数组的指针

  

struct Student{

    char *p_name;

    char *p_address;

    int  age;

  };

 

struct Student Students[3]={{....},{....},{....}};

 

  struct Strudent *p_student;    //定义指针

  p_student=Students ;     //把结构体变量数组名赋予该指针(数组名本身就是指针);

 

for(;p_student<Students+3;p_student++){

  printf("name=%s address=%s age=%d ",p_name->name,p_name->address,p_age->age);

}

posted @ 2017-03-08 15:42  颜小雀  阅读(256)  评论(0编辑  收藏  举报