您现在的位置是:主页 > news > 行距网站/黄页

行距网站/黄页

admin2025/6/23 3:33:27news

简介行距网站,黄页,福建厦门网站建设,东莞智通人才网官网登录结构体 引入: 在有些时候需要将不同类型的数据组成一个有机的整体,如将学生的姓名,学号,年龄等组织在一起,这时使用结构体是最方便的。 1、结构体类型的声明: struct 结构体名{ 成员列表 //成员也可以是结…

行距网站,黄页,福建厦门网站建设,东莞智通人才网官网登录结构体 引入: 在有些时候需要将不同类型的数据组成一个有机的整体,如将学生的姓名,学号,年龄等组织在一起,这时使用结构体是最方便的。 1、结构体类型的声明: struct 结构体名{ 成员列表 //成员也可以是结…

结构体

引入:
在有些时候需要将不同类型的数据组成一个有机的整体,如将学生的姓名,学号,年龄等组织在一起,这时使用结构体是最方便的。

1、结构体类型的声明:
struct 结构体名{
成员列表 //成员也可以是结构体
} ; //注意这里一定要有分号

2、结构体变量的定义:
1、先声明结构体类型,再定义变量;
struct 结构体名{
成员列表;
} ;
结构体类型名 变量名列表;

如:

struct student
{char num[5];char name[10];char sex;int age;float score;};struct Student stu1,stu2;

//定义了两个变量 stu1 和 stu2,它们都是 Stu 类型,都由 5 个成员组成
//注意关键字 struct 不能少

2、在定义结构体的同时定义结构体变量;

如;

struct Stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
//在定义结构体 Stu 的同时,创建了两个结构体变量 stu1 和 stu2

3、方式 3-如果只需要 stu1、stu2 两个变量,后面不需要再使用结构体数据类型,定义其他变量,在定义时也可以不给出结构体名。

如;

struct {
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1, stu2;
//1. 该结构体数据类型,没有名, 匿名结构体
//2. stu1 和 stu2 就是 该结构体的两个变量

3、结构体变量的赋值

结构体和数组类似,也是一组数据的集合,整体使用没有太大的意义。数组使用下标[ ]获取单个元素,结构体使用点号.获取单个成员。获取结构体成员的一般格式为
结构体变量名.成员名;

代码演示:

struct Stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} stu1;stu1.name="jieke";
stu1.age=5;
stu1.sex='m';
stu1.group=1;
stu1.score=90;或者是
struct Stu{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
} ;
struct  student stu1={"jieke",5,'m',1,90};或者是
struct Student{
char *name; //姓名
int num; //学号
int age; //年龄
char group; //所在小组
float score; //成绩
} stu1 = {"贾宝玉", 11, 18, 'B', 90.50}, stu2 = { "林黛玉", 12, 16, 'A', 100 };
struct Student stu3 = {"林黛玉 2", 12, 16, 'A', 100 }; //在定义结构体变量时,整体赋值,需要对应注意下面这种情况不可以
struct Student stu4;
stu4 = {"林黛玉 2", 12, 16, 'A', 100 }; // 这样赋值不可以
stu4.name = "smith"; //这种是可以的

4、成员
基本介绍

  1. 从叫法上看:有些书上称为成员, 有些书说 结构体包含的变量
  2. 成员是结构体的一个组成部分,一般是基本数据类型、也可以是数组、指针、结构体等 。比如我们前面定义
    Cat 结构体 的 int age 就是一个成员。

注意事项和细节说明

  1. 成员声明语法同变量,示例: 数据类型 成员名;
  2. 字段的类型可以为: 基本类型、数组或指针、结构体等
  3. 在创建一个结构体变量后,需要给成员赋值,如果没有赋值就使用可能导致程序异常终止。
  4. 不同结构体变量的成员是独立,互不影响,一个结构体变量的成员 更改,不影响另外一个。

5、使用结构体数组
定义结构体数组的方法和定义结构体变量相仿,只需要指明其为数组即可。
定义的方法和定义结构体变量一样有三种。

案例演示:
1)编写一个 Dog 结构体,包含 name(char[10]),age(int)、weight(double)属性
2) 编写一个 say 函数,返回字符串,方法返回信息中包含所有成员值。
3) 在 main 方法中,创建 Dog 结构体变量,调用 say 函数,将调用结果打印输出。

#include<stdio.h>
#include<stdlib.h>
struct Dog
{char *name;int age;double weight;
};char *say(struct Dog dog)
{//将这个信息放入到一个字符串(字符数组)static char info[50];  //函数种拘捕变量通常摇使用静态局部变量,从而避免空间被销毁sprintf(info,"name=%s age=%d weight=%.2f", dog.name,dog.age,dog.weight);//sprintf 是个变参函数,定义是:sprintf指的是字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。使用sprintf 对于写入buffer的字符数是没有限制的,这就存在了buffer溢出的可能性。return info;
}
int main()
{//定义结构体变量struct Dog dog;char *info=NULL;dog.name = "xiaohua";dog.age=2;dog.weight=5;info=say(dog);printf("小狗的信息为:\n%s",info);return 0;
}小狗的信息为:
name=xiaohua age=2 weight=5.00
Process returned 0 (0x0)   execution time : 0.514 s
Press any key to continue.

共用体

基本介绍
1)共用体(Union)属于 构造类型,它可以包含多个类型不同的成员。和结构体非常类似, 但是也有不同的地方.
共用体有时也被称为联合或者联合体, 定义格式为
union 共用体名{
成员列表
};
**2) 结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员
占用同一段内存,该空间的大小以占用最大的成员为准,修改一个成员会影响其余所有成员。 **

在这里插入图片描述

代码演示:

//共用体的定义及初始化
#include<stdio.h>
#include<stdlib.h>union data  //data 就是一个共用体(内存布局), 包含三个成员, 共享数据空间, 该空间的大小以占用最大的成员为准,这里int型空间最大,所以内存空间为int型
{int n;char ch;short m;
};void main()
{union data a;//定义两个一个 共用体变量 aprintf("%d, %d\n", sizeof(a), sizeof(union data) ); // 4, 4a.n = 0x40;//16 进制printf("%d, %c, %d\n", a.n, a.ch, a.m);a.ch = '9'; //printf("%d, %c, %d\n", a.n, a.ch, a.m);a.m = 0x2059;printf("%d, %c, %d\n", a.n, a.ch, a.m);a.n = 0x3E25AD54;printf("%d, %c, %d\n", a.n, a.ch, a.m);
}输出:
4, 4
64, @, 64
57, 9, 57
8281, Y, 8281
1042656596, T, -21164Process returned 22 (0x16)   execution time : 0.343 s
Press any key to continue.

在这里插入图片描述
注意:当为成员赋值时从低位开始,比如上图的右边为低位;下图则是上面的是低位。
在这里插入图片描述