易百教程

结构体指针

在开始之前,请先阅读以下代码:

typedef struct Dog Dog; // 将Dog定义为类型名称

struct Dog  // 结构体类型定义
{
      int age;
      int height;
      char name[20];
      char father[20];
      char mother[20];
};

以下代码显示如何为Dog结构体类型创建指针。

Dog *pdog = NULL;

这声明了一个指针pdog,它可以存储Dog类型结构的地址。如果没有typedef,则必须将语句编写为:

struct Dog *pdog = NULL;

可将pdog设置为具有特定结构的地址值:

struct Dog *pdog = NULL;
Dog adog = { 3, 11, "A", "B", "C"};
pdog = &adog;

这里pdog指向adog结构。指针可以存储狗数组中元素的地址:

pdog = &my_dog_array[1];

现在pdog指向结构my_dogs [1],它是my_dogs数组中的第二个元素。要显示此结构体的name成员,可以这样写:

pdog = &my_dog_array[1];
printf_s("The name is %s.\n", (*pdog).name);

也可以像这样编写:

pdog = &my_dog_array[1];
printf_s("The name is %s.\n", pdog->name );

这样的话,就不需要括号或星号了。