C++的结构体和函数

来源:互联网 发布:win7ipv6网络访问权限 编辑:程序博客网 时间:2024/06/08 15:53

写在前面:

  开始正文之前我需要简单介绍一下自己以及这个系列博客的目的。笔者是一名在读的软件工程的研究生(2017年)一直在自学算法和语言,写博客最初的原因就是看了刘未鹏的《暗时间》,这个系列博客是为了让同样自学的人少走点弯路加快建立一个属于自己的语言体系。

为了了解结构体,我们就来猜一下它是如何来的或者说我们为什么需要结构体——现实世界的任何问题都可以用数字来描述,为了让它能读懂这些问题我们自然就需要把这些数字存储起来,一个数就可以了为什么还就出现了8中基本数据类型呢?这是考虑到计算机内存的原因,一个一位数字和一个很多位的数字当然占用的内存大小不一样,我们不能因为个列就把所有的数都在计算机里开辟一个很大的内存去存储它,于是就区分为int等,那为什么就是占4个字节的int呢?因为int能处理我们绝大数的问题。再来看bool型,因为我们经常要用到逻辑判断(问一下这是真的吗?)所以后来这个才被列为基本数据类型之一。再来看数组,我们假设有两个数字要处理,那一个叫x一个叫y就可以了,但如果我们要处理100个相同类型的数字,让你一个一个去声明定义初始化你估计还能接受,那一万个呢?所以有了数组通过下标来访问相同类型的数字(元素)。那么我们来看结构体,如果要用一些数字来描述你,显然要有名字,身高等不同的数据类型,而且我们希望只要知道你的名字(或者其他信息)我们就能知道你所有的信息,显然我们就搞出来一个叫结构体的东西来存储组合在一起的不同类型的数据。

扯了这么多其实只是为了让自学的小伙伴有一种水到渠成的感觉。

下面我们来专注于语言本身。

//结构体#include<iostream>#include<cmath>using namespace std;struct A {   //声明一个名字叫做A的类型(或者叫结构体甚至对象)double X;//A里面有什么呢?你想让他有这些内容double Y;};struct B {double x;double y;};A BtoA(B b); //宇宙无敌怪异的函数声明,其实我们就是想要一个函数(或者说黑匣子) //输入时名字叫b的B类型时返回(或者说得到)一个A类型。int main(){B b = {2,5};//为了专注于语言本身我们直接初始化b        A a;//是否感觉这种写法很熟悉,类似于int a对吧,就是声明了一个叫做a的A类型的量。a=BtoA(b);//调用函数cout << a.distance <<endl<< a.angle;}A BtoA(B b) {A a;//既然该函数是要返回一个A类型的东西(或者叫对象)那就先建立它。a.X = b.x * 10;a.Y = b.y * 10;return a;//实现了同比扩大10倍的操作。}

1 0
原创粉丝点击