0
0
0

结构体

2021-03-26
2026-09-15
文章摘要
|

结构体

一、结构体的定义和使用。
  1. 定义

    结构体就是自己的定义的一个数据类型(类似于int char等)。

    1. 定义

      struct Sudent{
          char name;
          int age;
          char class;
      };
      

    2. 嵌套定义

      struct Data{
          int year;
          int month;
      };
      struct Sudent{
          char name;
          int age;
          struct Data brithday;
      };
      

    定义结构体变量的方式:

    //方式一
    struct Sudent s;
    //方式二
    struct Sudent{
        char name;
        int age;
        char class;
    }s;
    
  2. 初始化和使用

    struct Student s;
    s.name = "L";
    s.age = 18;
    printf("%d,%c\n",s.age,s.name);// 18,L
    
    struct Student s;
    s.brithday.year =2012;
    printf("%d\n",s.brithday.year);// 2012
    
    /*例1:定义一个结构体变量(包括年、月、日),输出一个日期*/
    #include<stdio.h>
    int main(){
        struct Data {
            int year;
            int month;
            int day;
        }d = {2023,12,9};
        printf("%d,%d,%d\n",d.year,d.month,d.day);
        return 0;
    }
    
    #include<stdio.h>
    int main(){
        struct Data {
            int year;
            int month;
            int day;
        };
        d.year = 2023;
        d.month = 12;
        d.day = 9;
        printf("%d,%d,%d\n",d.year,d.month,d.day);
        return 0;
    }
    
二、结构体数组
  1. 定义结构体数组:

    struct Penson{
        char name[10];
        char sex[10];
        int ticket;
    };
    struct Penson penson[5];
    //struct Penson penson[5] 类似于 int n[5];
    
  2. 应用

    有n个选举人的信息(包括姓名、性别、票数),按照票数的由高到底输出选举人的信息。

    #include<stdio.h>
    struct Penson{
        char name[10];
        char sex[10];
        int ticket;
    }penson[5];
    
    int main(){
        struct Penson t;
        int i,j;
        printf("请输入每个选举人的信息:\n");
        for(i = 0;i < 5;i++){
        	printf("请输入第%i个选举人的信息:\n",i+1);
            scanf("%s %s %d",&penson[i].name,&penson[i].sex,&penson[i].ticket);
        }
        for(i = 0;i < 5;i++){
            for(j = 0;j < 5-i-1;j++){
                if(penson[j].ticket < penson[j+1].ticket){
                   	t = penson[j];
                    penson[j] = penson[j+1];
                    penson[j+1] = t;
                }
            }
        }
        for(i=0;i<5;i++){
            printf("%s %s %d\n",penson[i].name,penson[i].sex,penson[i].ticket);
        }
        return 0;
    }
    

三、结构体指针
  1. 指向结构体变量的指针

    #include<stdio.h>
    #include<string.h>
    struct Penson{
        char name[10];
        char sex;
        int ticket;
    }penson[5];
    int main(){
        struct Penson penson;
        struct Penson *p;
        p = &penson;
        strcpy(penson.name,"张三");
        penson.sex = 'M';
        penson.ticket = 89;
        printf("%s %c %d\n",penson.name,penson.sex,penson.ticket);
        printf("%s %c %d\n",p->name,p->sex,p->ticket);
        return 0;
    }
    

  2. 指向结构体数组的指针

    #include<stdio.h>
    struct Penson{
        char name[10];
        char sex;
        int ticket;
    }penson[5];
    int main(){
        struct Penson penson[3]={{"张三",'m',34},{"李四",'w',67},{"王五",'w',32}};
        struct Penson *p;
        for(p = penson;p < penson+3;p++){
            printf("%s %c %d\n",p->name,p->sex,p->ticket);
        }
        return 0;
    }
    /*
    张三 m 34
    李四 w 67
    王五 w 32
    */
    
  3. 结构体变量和结构体变量指针做函数参数

    #include<stdio.h>
    struct Penson{
        char name[10];
        char sex;
        int ticket;
    }penson[5];
    void print(struct Penson penson[]){
        struct Penson *p;
        for(p = penson;p < penson+3;p++){
            printf("%s %c %d\n",p->name,p->sex,p->ticket);
        }
    }
    int main(){
        struct Penson penson[3]={{"张三",'m',34},{"李四",'w',67},{"王五",'w',32}};
        struct Penson *pen = penson;
        print(pen);
        return 0;
    }
    /*
    张三 m 34
    李四 w 67
    王五 w 32
    */
    

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论

欢迎来到我的博客!