学点 C 语言(25): 数据类型 - 结构数组与结构指针

180it 2020-03-05 AM 92℃ 0条

学点 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;

}

  1. 结构指针指向已存在的结构数组:

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;

}

  1. 结构指针(单个结构):

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;

}

  1. 结构指针(多个结构):

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;

}

  1. 连续的多个结构不就是结构数组了吗?(同上例)

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;

}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

学点 C 语言(25): 数据类型 - 结构数组与结构指针