C++ 结构体&指针
今天来学习结构体和指针水一波,结构体和指针都是 C++ 的基础部分,当然,它不是一种算法
结构体
定义
结构体大致可以理解为一个包含了多种变量的新变量形式,定义结构体的方式如下
结构体就相当于你自己定义的一种变量类型,而结构体名就是变量类型的提示符,即
当然这两种定义的方式都是可以的,值得注意的是,它与定义变量时的要求一样,不能使用保留字,不能重复定义,不能重复使用相同的变量名
struct node声明需要定义一个结构体类型的变量类型,名为 node
结构体里面可以定义非常多的东西,结构体中的各种东西都仍然需要占用一定的空间,并不是用了结构体就能减少空间的利用,它只是帮助我们方便地更改一个对象的值
使用
当需要访问某个结构体的内部变量,一般这样引用 ( node 为上面的 )
结构体变量名.成员名 指向该结构体的指针->该结构体的成员这样形式的变量就相当于普通的变量了,与普通的变量使用方式相同
其他
node a[10]; node a[10][10];
你知道吗
这样的代码会编译错误
可是,当加上 * 号后不会了
为什么呢,接下来就来看看什么是指针
指针
指针也是一种变量类型,大家都知道,每个变量都需要被存储 ( 废话 ),只有计算机知道这个变量存在哪里,所以如果要知道这个变量存在哪里怎么办?( 虽然知道存在哪里也没什么用 )
这时候就要用到指针了,指针就像一个指针,它总会指向某个变量,即保存着这个变量的地址
而地址嘛...
是一些奇奇怪怪的数,反正我们是看不懂的
可是指针的作用可不小
定义
一个指针变量应该这样声明,这里的指针符号 * 就是用来声明指针的
int *b;如果什么都没有填,也不会指向某个变量
值得注意的是,定义指针变量不会真的创建一个相应类型的变量,而是创建一个相应类型的指针变量,这就是为什么在结构体中允许定义指向自身变量的指针了
int *b=&a; scanf("%d",&a);scanf 函数中的 & 也是取地址符,所以,使用 scanf 时传入函数的是地址,而不是变量 a 的值
int a; int *b=&a; //这是对的 int a; char *b=&a; //这是错的使用
知道了取地址符,也要知道解引用符,即 * ,这时有人就要问了
这个本来不是乘法吗,变成指针我已经忍了,怎么又变成别的了?
当它用在两侧都有变量的时候,它就是乘法符号
当它用在定义一个指针变量的时候,它就是指针符号
当它用在指针变量前时,它就是解引用符号
这时 * 就像是一个解读器,把 b 所指向的地址中的内容转变为变量传给 c
其他
数组的名字可以看做是该数组的指针,并且在定义数组时,程序都会申请一块连续的空间,所以,访问数组时可以这样做
指针就先讲到这里,其实指针还有很多的功能
文档下载
转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。
链接:C++ 结构体&指针http://www.gufeng7.com/niaolang/1857.html
联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com
上一篇: C++ 基础算法 - 搜索与回溯算法
下一篇: C++ 文件输入输出