程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學點C語言(25):數據類型 - 結構數組與結構指針

學點C語言(25):數據類型 - 結構數組與結構指針

編輯:關於C語言

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

返回“學點C語言 - 目錄”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved