结构体变量与结构体数组,结构体类型定义
分类:web前端

struct是一种类型(结构体类型)与int、float一样的,它是为了解决C语言类型单调而设计的。在它里面可以出现int、string类型等C语言类型。使用它不需要定义,常常用它定义结构体。如定义一学生结构体:
struct students
{
   int age;
   int Number;
   char name[20];
}
还可以通过结构体建立C语言的灵魂——链表
如:struct student
{int data;
struct student *next;
}

结构体类型定义(C语言),c语言

结构体的定义形式如下:

struct 结构体名

{

  结构体成员

};

结构体变量的定义方式有三种:
1、先定义结构体,再定义变量:

eg.

struct student{

  char name[10];

  int age;

  int student_number;

};

struct student s1,s2;

2、定义结构体的同时定义变量:
eg.

struct student{

  char name[10];

  int age;

  int student_number;

}s1,s2;

在定义结构体student的同时定义了结构体变量s1,s2.

3、只定义结构体变量

eg.

struct{

  char name[10];

  int age;

  int student_number;

}s1,s2;

在这种情况下,如果还想定义一个变量s3,那么要使用和定义s1、s2一样的方法。

 

将typedef和结构体结合,比如说:

typedef struct _student{

  char name[10];

  int age;

  int student_number;

}student;

这个时候student就不是一个变量了,它是结构体struct _student的别名,如果想定义一个变量,就可以直接使用student

student s1;

而不需要struct _student s1;

另外还可以定义结构体指针类型:

typedef struct _student{

  char name[10];

  int age;

  int student_number;

}*student;

这个时候student s1;定义的变量就是一个结构体指针s1了。等价于struct _student *s1。

结构体的定义形式如下: struct 结构体名 { 结构体成员 }; 结构体变量的定义方式有三种: 1、先定义结构...

C语言学习笔记

之  结构体变量与结构体数组

-

一、定义

1.结构体类型

struct student

{

  int num;

  char name[20];

  char sex;

  int age;

  float score;

};//要加“;”

struct student  student1,student2;

struct student

{

  int num;

  char name[20];

  char sex;

  int age;

  float score;

} student1,student2;

//加“;”

struct

{

  int num;

  char name[20];

  char sex;

  int age;

  float score;

} student1,student2;

C 数组允许定义可存储相同类型数据项的变量

2.含义

  以上可以说是结构体的三种形式,结构体是看以看做一个整体,是一个集合,集合中可以包含任意的类型,可以是int,可以是char和float.

一个学生的信息最适合用结构体来表示了,因为学生的信息有学好num,名字name, 年龄性别等等。Struct是结构体定义的符号,结构体内定义信息。可以表示为下图所示:

图片 1

  一个学生的信息用结构体表示出来后,就可以用了,要进行创建对象,有两种方式,

在结构体之外进行定义struct student  student1,student2;)和 在结构体定义的时候定义} student1,student2;)。这两种方式都是可以的,上述就是新创建了两个新的学生student1和student2。

    若想将其中的age换成出生日期,如下图:

图片 2

 可以先定义一个struct date日期类型。


struct date
{
  int year;
  int month;
  int day;
};
struct student
{
   int num;
   char name[20];
   char sex;
   struct date birthday;//引用struct date,定义为birthday
   float score;
} student1,student2;


 上述中struct student中的成员birthday被定义成了struct date类型,那么birthday就有了struct date的属性。

结构是 C 编程中另一种用户自定义的可用的数据类型

3.结构体变量的引用

 结构体变量的引用无非就是引用结构体中的成员。它的引用方式为:

结构体变量名 . 成员名

比如:student 1 .score ,它表示学生stucent 1的分数,中间必须得有“.”,这个点是成员运算符,比如:student 1.score=89.6

当成员本身又是结构体类型时的子成员访问应该是:student 1.birthday.year。

同一种类型的结构体变量之间可以直接赋值:比如:student 1=student 2

可以把一个结构体变量中的内嵌结构体类型成员赋给同种类型的另一个结构体变量的相应部分:student 2.birthday=student 1.birthday。

它允许存储不同类型的数据项。

4.结构体变量的初始化


#include <stdio.h>
struct student
{
   int num;
   char name[20];
   char sex[2];
   int age;
   float score;
   /*结构体变量的初始化*/
}student1={11301,"zhaoyuqiang","F",22,450};
main()
{
//输出成员变量
   printf("学号=%dn名字=%sn",student1.num,student1.name);
   printf("分数=%fn",student1.score);
}


结构体:是一种数据类型,是我们根据自己的需要构造出来的数据类型,它是由若干个数据项组合而成的复杂数据类型,这些数据项称为该结构类型的成员。

5.结构体数组


struct student
{
   int num;
   char name[20];
   char sex;
   int age;
   float score;
} student 1,stu[30];


 上述定义了一个结构体变量student 1和一个结构体数组stu,这个数组有30个元素,每一个元素都是 struct student 类型的,如下图所示:


Num

Name

Sex

Age

Score

Stu[0]

11301

Zhangping

F

56

89

........

..........

........

........

........

........

Stu[29]

11302

Liheng

M

12

56

调用的时候用stu[i].score调用,i为数组下标元素


#include <stdio.h>
struct student
{
   int num;
   char name[20];
   char sex;
   int age;
   float score;
};
struct student stu[4]={{11301,"zhaoyuqiang",'F',19,458.6}, {11302,"lizheng",'F',18,456.6},
{11305,"xuefeiyang",'M',20,168.9}};//数组的初始化,要定义在结构体外部或者静态数组才能初始化。
main()
{
   int i;
   float a=0,s=0;
   for(i=0;i<4;i++)
   {
       a=a+stu[i].age;
   s=s+stu[i].score;
   }
   printf("平均年龄是%fn",a/4);
   printf("平均成绩是%fn",s/4);
}


本文出自 “赵玉强的博客” 博客,请务必保留此出处

语言学习笔记 之 结构体变量与结构体数组 1. 结构体类型 struct student { int num; char name[20]; char sex; int age; float score; } ; / / 要加“;” s t...

定义一个结构:

格式:

struct 结构体名

{

    datatype 变量名1;

    datatype 变量名2;

    ....

};

//datatype是c语言中有效的数据类型,如:int,char,float

例:

struct student

{

    int num;                      =>数据类型,  int char 一样的用

    char name[20];

    char sex;

    float score;//数据成员

};

注:

1.定义结构并不分配空间,它仅仅是个数据类型

2.通常位我们把结构的定义放在include的后面,如果是多文件的话会放在头文件中去(.h)

3.其中{}后面有分号;

4.结构体类型名与它的成员名可以同名。

例:

struct test

{

    int test;

};

5.结构体成员名与其他变量名相同也可以

6.结构体类型名称是"struct 结构体名" ,注意struct 关键字不能省略

7.结构体可以嵌套,即结构体里数据类型也可以是一个结构体类型,但是不能是自身的结构体类型

struct birthday

{

    int year;

    int month;

    int day;

};

struct student

{

    int num;

    char name[20];

    struct birthday  bd;

};

struct student

{

    int num;

    struct student stu2;  X

};

定义结构体变量

1.先定义结构体类型,再定义结构体变量

例:

struct student

{

    int num;

    char name[20];

    float score;

};

struct student      stu1,stu2;  //定义了stu1,stu2  2个变量

2.在定义结构体类型的同时定义结构变量、

例:

struct student

{

    int num;

    char name[20]

}stu1,stu2;

struct student    stu3;

3.直接定义结构体变量

struct    //无名结构体

{

      int num;

      char name[20];

}stu1,stu2;

表示结构体变量成员的一般形式:  结构体变量.成员名

例:

struct data

{

    int year;

    int month;

    int day;

};

struct man

{

    char name[20];

    struct data weding_date;

};

struct man man1,man2;

访问该结构体变量成员;

man2.weding_date.year  一级一级访问。

man2.name

给结构体变量赋值:

1.结构体变量的初始化:定义结构体变量的同时给它赋值

int a[5]={1,2,3,4,5};

struct student  student1={1,"xxxx",'m',90};

形式一:

struct 结构体名

{

    类型 成员名;

    ...

};

struct 结构体名  结构体变量={初始化数据}

例:

struct student

{

    int num;

    char name[20];

    float score;

};

struct student stu1={1,"xxx",90};

形式二:

struct 结构体名

{

    类型 成员名;

    ...

}结构体变量名={初始化数据};

struct student

{

    int num;

    char name[20];

    float score;

}stu1={1,"xxx",90};

初始化的时候是否可以给成员变量的值不赋全?

可以,但不推荐如此

结构体变量的引用规则:

1.除了在定义变量的时候整体访问,引用的时候,不能整体访问,只能通过“变量名.成员名”的方式访问。除了情况2:

#include

//自定义的数据类型

struct student

{

char name[20];

char sex;

int age;

float score;

};

//用自定义的数据类型定义变量stu1并初始化

struct student stu1={"xxx",'m',1,90};

void main()

{

printf("%s %c %d %fn",stu1);

}

2.

#include

//自定义的数据类型

struct student

{

char name[20];

char sex;

int age;

float score;

};

//用自定义的数据类型定义变量stu1并初始化

void main()

{

struct student stu1={"xxx",'w',1,90},stu2;

stu2=stu1;

stu2={"vvv",'m',2,89}; X

if(stu1==stu2)  X

printf("%s %c %d %.2fn",stu2.name,stu2.sex,stu2.age,stu2.score);

}


int  a;      int* p=&a;          *p<=> a

int a[5];    int (*p)[5]=&a;

struct student    a;    struct student  *p=&a;    *p==a

结构体指针变量:

一个专门用来指向一个结构体变量的指针。

指向一个结构体变量的指针的值是这个结构体变量的首地址。

结构体指针变量定义的一般形式:

struct 结构体名  *p;

通过结构体指针访问该结构体变量的成员,一般形式:

结构体变量.成员名<=>(*结构体指针变量).成员名<=>

结构体指针变量->成员名

例:

结构数组:元素为结构体类型的数组

结构体数组定义的3中方式

形式一:

struct student

{

    int num;

    char sex;

    int age;

};

struct student stu[2];    <=>int a[5]

形式二:

struct student

{

    int num;

    char sex;

    int age;

}stu[30];

形式三:

struct

{

int num;

char sex;

int age;

}stu[30];

结构体数组初始化

struct student

{

    int num;

    char sex;

    int age;

};

struct student stu[]={100,'m',12,102,'w',13};

struct student stu[]={{100,'m',12},{102,'w',13}};

结构体数组的引用:

引用方式:

结构体数组名[下标号].成员名

例: stu[0].num=102;  给第一个学生的学号赋值

结构体作为函数的参数:

1.可以将结构体变量的成员的值作为参数传递给函数处理

2.将整个结构体变量作为函数的参数传递

3.可以将指向一个结构体变量的指针作为参数传递

 

 

本文由10bet手机官网发布于web前端,转载请注明出处:结构体变量与结构体数组,结构体类型定义

上一篇:转换为日期型数据 下一篇:获取windows操作系统版本号,威海印机新产品顺利通过鉴定委员会的验收
猜你喜欢
热门排行
精彩图文