易百教程

理解结构体

struct是一个创建结构的C语言关键字。

struct record 
{ 
      char name[32]; 
      int age; 
      float debt; 
}

在花括号内居住结构的成员。记录结构类型包含三个成员变量:字符串类型的nameint类型的agefloat类型的debt。要使用这个结构体,必须声明创建的结构类型的结构变量。 例如:

struct record human;

该行声明了record结构类型的新变量,新变量名为human。定义结构本身时,可以声明结构变量。 例如:

struct record 
{ 
      char name[32]; 
      int age; 
      float debt; 
} human;

这些语句定义record结构体并声明记录结构变量human。还可以创建该结构类型的多个变量:

struct record 
{ 
      char name[32]; 
      int age; 
      float debt; 
} r1, r2, 43, r4;

在此示例中创建了四个记录结构变量。每个变量都可以访问结构体中定义的三个成员。要访问结构变量中的成员,请使用句点,即成员运算符。它将结构变量名称与成员名称连接起来。 例如:

printf("Victim: %s\n",r4.name); 
r2.age = 32;

以下代码显示了如何使用结构体。

示例代码

#include <stdio.h>

int main()
{
    struct player
    {
        char name[32];
        int highscore;
        float hours;
    };
    struct player xbox;

    printf("Enter the player's name: ");
    scanf("%s", xbox.name);
    printf("Enter their high score: ");
    scanf("%d", &xbox.highscore);
    printf("Enter the hours played: ");
    scanf("%f", &xbox.hours);

    printf("Player %s has a high score of %d\n", xbox.name, xbox.highscore);
    printf("Player %s has played for %.2f hours\n", xbox.name, xbox.hours);
    system("pause");
    return(0);
}

执行上面示例代码,得到以下结果:

Enter the player's name: Curry
Enter their high score: 197
Enter the hours played: 2.1
Player Curry has a high score of 197
Player Curry has played for 2.10 hours