南哪2022-7-data-types

题单介绍

虽然已经说了7-data-types里面并不是data-types的内容,但是我们还是来说说data-types。 某CQ真的不清楚data-types讲的是什么,不过他猜大概是struct,那他就来把struct一般怎么用的来好好讲讲。 struct(结构体)这个东西,它真的非常的好用。因为在C语言当中没有class(对象)这个概念,而struct便因此成为了能媲美class的存在。 先来简单介绍一下struct的基本用法 ```c struct Data//等于是自己定义一种变量类型,这是它的名字 { int data1; char data2; double data3;//里面填你在这个变量里面想存什么东西 };//因为是定义一种变量类型,所以不要忘了加分号 struct Data dat;//定义一个Data变量 dat.data1 = 114514; dat.data2 = '6'; dat.data3 = 114514.1919810; //使用struct变量名.内部变量名来调用其中的某一个变量 ``` 使用struct可以很方便的将多个数据打包,使得程序更加的通俗易懂。 当然,struct的强大之处还不止于此。 #### (对,struct很强大,但是C语言当中并不能写出下文所述的语法,某CQ刚刚才发现写的时候有点想当然了,写都写了,就不删了,反正C语言这样写编译器也不给过。) 定义函数: 没错!struct可以有属于它自己的函数来处理其内部的变量!比如说我们建了一个数组,并想实现在某一个位置添加或者删除某一个元素,我们可以这样来写: ```c struct MyArray { int a[N], len; void insert(int pos, int x) { ++len; for (int i = len; i > pos; --i) a[i] = a[i - 1]; a[pos] = x; } void erase(int pos) { --len; for (int i = pos; i <= len; ++i) a[i] = a[i + 1]; } } int main() { struct MyArray arr; int n; scanf("%d", &n); for (int i = 1; i <= n; ++i) scanf("%d", &arr.a[i]); int pos, x; scanf("%d%d", &pos, &x); arr.insert(pos, x); arr.erase(pos); return 0; } ``` 我们同样可以使用这种很简单的方式来调用struct中的某个函数来方便的对struct中的内容进行一些简单的处理。 学了之前的指针,你也可以将一些常用的函数打包在一个结构体里面,然后想用的时候很方便的拿出来用,还不用担心自己定义的某个函数和里面的重名,多好啊! struct的用法其实很简单易懂,就稍微找点题练练手好了。

题目列表

  • 【深基7.例9】最厉害的学生
  • 【深基7.例10】旗鼓相当的对手 - 加强版
  • 【深基7.例1】距离函数