当前位置:天才代写 > tutorial > C语言/C++ 教程 > 学点C语言(25):数据范例 – 布局数组与布局指针

学点C语言(25):数据范例 – 布局数组与布局指针

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:382

副标题#e#

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


#p#副标题#e#

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语言 – 目次”

 

    关键字:

天才代写-代写联系方式