结构体与类的由来与指针及发展史
但是往往很多情况下我们需要几种类型配套使用,就比如说你用变量描述一个人,这个人不止有int属性
如身高,体重为浮点型,名字为字符串,年龄为int
这时候我们就需要定一个一个新类型
结构体实际上和数组也差不多
只不过是不同类型
比如说一个结构体中有两个int一个char类型
那么他就会申请9个内存单元
因为int_2+char_1=4*2+1=9
分给两个int和chart
所以结构体的本身就是个地址
ide会根据你定义的结构体让你能指向他其中的元素
结构体a里面有name和age还有height三个元素,我们表层访问是不是(*a).name
a是个地址,我们只需要指向其中的地址就可以,比如a->name
我们一般存东西都是往内存里存,所以a->name=""这种是成立的
如果有一百个人的信息怎么解决
用结构数组,然后很多时候我们需要用到一些特殊的变量——指针变量
指针变量是用于存地址用的变量
通常是变量类型后+*号声明
比如int * ;就是寸int类型变量的地址用的
既然指针是变量,那么肯定也有指针变量的地址
比如int **a;
int_*就是用来存int_的地址用的
我们有两个符号要学一下,一个是&一个是_,&是取地址符号_ 是取量符号
直接打印结构体报错是因为输出的不对
你要输出什么东西,就得把对应地址里的量取出来
java里面很多东西简化了,所以你觉得直接打印结构体就会打印出来结构体的结构,但实际上不会
但是,以上这些应该属于c基础了
c++的出现是因为下面这个理由
int * a;这是 整型指针变量a
int ** a;这是整型指针变量的指针变量
地址和地址的地址
结构体按理说已经很完美了,但是实际上是不完美的,比如说我们能不能往结构体里放置函数进去
例如说我们结构体中某一个量是一个函数
这种情况也是开发中很需要的
于是乎C++创始人先是对结构体下手了
c++结构体是可以放置函数的
这样就很完美了(c不可以)
他又给结构体弄了继承和多态
可以用结构体实现继承和多态了
这其实也很完美
但是有个问题了
结构体本身是开放的
这样肯定是不行的
我们不能所有东西都开放对吧
干脆这时候 就放弃对结构体的完善了
就出来了一种新的东西叫类(Class)
类不仅有结构体的全部功能
还支持私有public private protected
其中的public类型其实就是结构体
所以结构体在这时就可以看做是特殊的类
不能说是类,可以说是类的前身
从类的出现开始c++就和c分清界限了
原来的c++可以说是对c的补充
但这时候就可以认为是一门独立的语言了
比如说c喜欢分头文件和代码文件.h和.c
只需要在头文件中查看 就可以知道函数有多少 该分配内存就开始分配了
对于没有分配内存的函数直接就是报错处理 不会说是在执行时判定
这是时代的局限性c++没有躲开这个
因为他自己最早认为自己就是c的拓展包括类来说都是放到头文件里 然后声明好类里的函数的公有私有
代码文件后缀改了.cpp
c plus plus
c + +