zoukankan      html  css  js  c++  java
  • 学点 C 语言(25): 数据类型 结构数组与结构指针


    1. 结构数组:
    #include <stdio.h>
    
    int main(void)
    {
        struct Rec {int x,y;};
    
        struct Rec rs[10];
        
        size_t i;
        for (i = 0; i < sizeof rs/sizeof rs[0]; i++) {
            rs[i].x = i;
            rs[i].y = i * 2;    
        }
    
        for (i = 0; i < sizeof rs/sizeof rs[0]; i++) {
            printf("%d, %d\n", rs[i].x, rs[i].y);    
        }
        
        getchar();
        return 0;
    }
    
    #include <stdio.h>
    
    int main(void)
    {
        struct Rec {
            char  name[12];
            short age;
        } rs[3] = {
                    {"AAA", 11},
                    {"BBB", 22},
                    {"CCC", 22}
                  };
    
     
        size_t i;
    
        for (i = 0; i < sizeof rs/sizeof rs[0]; i++) {
            printf("%s, %d\n", rs[i].name, rs[i].age);    
        }
        
        getchar();
        return 0;
    }
    

    2. 结构指针指向已存在的结构数组:
    #include <stdio.h>
    
    int main(void)
    {
        struct Rec {
            char  name[12];
            short age;
        } rs[3] = {
                    {"AAA", 11},
                    {"BBB", 22},
                    {"CCC", 22}
                  };
    
        struct Rec *p = rs;
     
        printf("%s, %d\n", p->name, p->age);
        printf("%s, %d\n", (p+1)->name, (p+1)->age);
        printf("%s, %d\n", (p+2)->name, (p+2)->age);
        
        getchar();
        return 0;
    }
    

    3. 结构指针(单个结构):
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        struct Rec {
            char  name[12];
            short age;
        };
    
        struct Rec *p = NULL;
     
        p = (struct Rec *)malloc(sizeof(struct Rec));
    
        stpcpy(p->name, "ABC");
        p->age = 99;
    
        printf("%s, %d\n", p->name, p->age);
        printf("%s, %d\n", (*p).name, (*p).age);
    
        free(p);     
        
        getchar();
        return 0;
    }
    

    4. 结构指针(多个结构):
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        struct Rec {
            int x;
            int y;
        } *p;
    
        size_t i, count = 10;
    
        p = (struct Rec *)malloc(sizeof(struct Rec)*count);
    
        for (i = 0; i < count; i++) {
            (p+i)->x = i;
            (p+i)->y = i * i;
        }
    
        for (i = 0; i < count; i++) {
            printf("%d, %d\n", (p+i)->x, (p+i)->y);    
        }
    
        free(p);     
        
        getchar();
        return 0;
    }
    

    5. 连续的多个结构不就是结构数组了吗?(同上例)
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void)
    {
        struct Rec {
            int x;
            int y;
        } *p;
    
        size_t i, count = 10;
    
        p = (struct Rec *)malloc(sizeof(struct Rec)*count);
    
        for (i = 0; i < count; i++) {
            p[i].x = i;
            p[i].y = i * i;
        }
    
        for (i = 0; i < count; i++) {
            printf("%d, %d\n", p[i].x, p[i].y);    
        }
    
        free(p);     
        
        getchar();
        return 0;
    }
    

  • 相关阅读:
    SQLAlchemy Table(表)类方式
    MySQL简单入门
    第四次作业
    第三次随笔
    第二次随笔
    第一次随笔
    第四次随笔
    第三次作业
    第二次随笔
    第一次随笔
  • 原文地址:https://www.cnblogs.com/del/p/1343162.html
Copyright © 2011-2022 走看看