Linux C程序设计基础-结构体

结构体的定义

        在实际问题中,一组数据往往具有不同的数据类型。但是数组中各元素的类型和长度必须一致,才能便于编译系统处理。所以C语言中给出了另一种构造数据类型——“结构”或叫“结构体”。它相当于其他语言中的记录。

        “结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。

        结构是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它,如同在说明和调用函数之前要先定义函数一样。


结构的声明

        定义一个结构的一般形式为:

                struct 结构名

                {成员列表};

        成员列表由若干个成员组成,每个成员都是该结构的一个组成部分,对每个成员也必须作类型说明,其形式为:

                 类型说明符  成员名;

        成员名的命名应符合标识符的书写规定,例如:

struct stu
{
   int num;
   char *name;
   char sex;
   float score;
};


结构类型变量的说明

    说明结构变量有一下三种方法,以上定义的stu为例来加以说明。

1.先定义结构,再说明结构变量。如:

struct stu
{
   int num;
   char *name;
   char sex;
   float score;
};
struct stu boy1,boy2;

2.在定义结构类型的同时说明结构变量。例如:

struct stu
{
   int num;
   char *name;
   char sex;
   float score;
}boy1,boy2;
这种形式的说明的一般形式为:

struct 结构名
{
    成员列表
}变量名列表;

3.直接说明结构变量。例如:

struct
{
   int num;
   char *name;
   char sex;
   float score;
}boy1,boy2;
这种形式的说明的一般形式为:
struct
{
    成员列表
}变量名列表;


结构变量的赋值

        本程序使用赋值语句给num和name两个成员赋值,name是一个字符串指针变量。用scanf函数动态的输入sex和score成员值,然后把boy1的所有成员的值整体赋予boy2。最后分别输出boy2的各个成员值。

int main(){
   struct stu{
     int num;
     char *name;
     char sex;
     float score;
}boy1,boy2;
 boy1.num = 101;
 boy1.name = "小明";
 printf("input sex and score\n");
 scanf("%c %f",&boy1.sex,&boy1.score);
 boy2 = boy1;
 printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
 printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}

        本例表示了结构变量的赋值、输入和输出的方法。


结构变量的使用

struct Student
{
  int No;
  char *Name;

  void Show()
 {
    printf("我叫%s,学号是%d\n",Name,No);
 }
};
struct Math{
   int x;
   int y;
}

int sum (struct Math math){
  return math.x + math.y;
}

void main(){
  struct Main math = {10,20};
  printf("x=%d,y=%d,sum=%d",math.x,math y,sum(math));
}

运行后结果是
x=10,y=20,sum=30


猜你喜欢

转载自blog.csdn.net/cool__king/article/details/79793324