前言
随着函数的讲解完成,我想你已经初步有了写一些复杂逻辑功能的能力,但是我们会发现其实在我们大部分实际开发情况中,很多我们需要写的变量可能不只有一个属性。
他可能有很多变量,那这时候我们如果要把这些变量集中到一个东西身上,就需要结构体这个特殊的数据类型。
结构体是一种在编程语言中用来组织和存储相关数据的数据类型。它的历史可以追溯到20世纪60年代早期,在那个时候,编程语言的数据类型常常是原始的,无法直接表示复杂的数据结构。
1960年代的Fortran语言是第一个引入结构体概念的编程语言。在Fortran中,结构体被称为"记录"(record),它由一系列字段组成,每个字段都有自己的名称和类型。记录可以用于组织和存储相关的数据,使得程序变得更加灵活和可读。
C语言是在20世纪70年代早期引入结构体的编程语言之一。C语言的结构体与Fortran的记录类似,它也是由一系列字段组成的数据类型。C语言的结构体被广泛应用于数据结构、函数参数和返回值等方面。
随着时间的推移,结构体逐渐在其他编程语言中得到了广泛应用和支持。在面向对象编程语言中,结构体通常被称为"类"或"对象",并具有更强大的功能和概念。
总的来说,结构体的历史可以追溯到20世纪60年代,它是为了解决编程语言中数据组织和存储的问题而引入的。结构体通过定义一系列字段,可以将相关的数据组织在一起,提高程序的可读性和灵活性。
c#中博主也会进行类和结构体的区别的讲解,不过在此之前,我们先来了解到底结构体是什么。
概念
结构体是一种自定义变量类型,类似枚举,需要自己定义
它是数据和函数的结合,在结构体中,可以声明各种变量和方法,我们可以将他们看做一个整体。
基本语法
注意:
- 结构体一般写在namespace里
- 结构体的关键字struct
cs
sturct 自定义结构体名(帕斯卡命名法)
{
//变量,不能直接初始化。变量类型随便,包括结构体,但是不能是自己的结构体
//构造函数
//函数方法,表示这个数据结构的行为,在结构体中的方法不需要加static
}
具体实例
下面是一个使用C#编写的学生成绩结构体:
简单实现了输入名字和分数并将二者打印出来的效果。
csharp
using System;
struct StudentGrade
{
public string name;
public int score;
public void DisplayGrade()
{
Console.WriteLine("学生姓名:" + name);
Console.WriteLine("学生成绩:" + score);
}
}
class Program
{
static void Main(string[] args)
{
StudentGrade student;
Console.Write("请输入学生姓名:");
student.name = Console.ReadLine();
Console.Write("请输入学生成绩:");
student.score = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\n学生信息如下:");
student.DisplayGrade();
Console.ReadLine();
}
}
我们实际情况可能会更复杂,但是这里只是给你展示一下结构体的功能,所以你能感受到结构体本身如何申明和使用就可以。
你可能注意到了一个新的关键词public,这个是访问修饰符,我们等下就进行讲解。
访问修饰符
概念:修饰结构体中变量和方法,是否能被外部使用
- public 公共的 可以被结构体外部访问
- private 私有的 只能在结构体内部使用
tips:默认不写都是private。
结构体的构造函数
-
没有返回值
-
函数名必须和结构体名相同
-
必须有参数
-
申明了构造函数,就必须在其中对所有变量数据初始化
例子
csharp
using System;
struct StudentGrade
{
public string name;
public int grade;
public StudentGrade(string name, int grade)
{
this.name = name;//本身的name变量等于传入的name值
this.grade = grade;
}
public void DisplayInformation()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("Grade: {0}", grade);
}
}
class Program
{
static void Main(string[] args)
{
// 创建学生成绩实例
StudentGrade student = new StudentGrade("John Doe", 85);
// 显示学生成绩信息
student.DisplayInformation();
Console.ReadLine();
}
}
新关键词:this,代表结构体本身
总结
结构体的知识点就学完了,我想如果你掌握了结构体的知识,已经可以实现一些有具体功能的控制台应用了:学生分数管理器,或者说初学者必写的贪吃蛇。
其实你晃一眼看,都会觉得很简单,但是所有优秀的程序猿都会自己动手去敲代码。
一定要多练多写,你可以在我这里补充知识,但是练习敲代码,这个是我无法帮你完成的。
闲话不多说,请期待我下一篇博客。