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; }