首页 > 社交 > 科普中国

C++入门之指针(1)

常驻编辑 科普中国 2022-10-19 指针   赋值   车厢   变量   入门   分配   内存   代表   方式   地址   空间

指针是C++中最重要的知识点之一。学习过C语言的同学应该对指针有所了解。即使没有学习过C语言也没关系,因为完全可以从学习C++开始啊,哈哈,因为咱们要学习的就是c++啊。N19拜客生活常识网

什么是指针,简单来说,指针是指向一块内存地址的变量,该变量内存放的值是一个内存地址。N19拜客生活常识网

比如:N19拜客生活常识网

int a = 1;N19拜客生活常识网

int* p_a = &a;N19拜客生活常识网

那么p_a就是指向a所在地址的指针,假设a在内存中开始的地址为0x00170010,那么p_a的值就是0x00170010,其中“零x”代表的是16进制数。a的值是1。也就是说以0x00170010为起始的4个字节的内存空间中存放着的值是1,也就是a的值。(int 型变量是4个字节)。“&”是在这里是取地址符,就是取到a所在的地址。指针所指向的变量类型必须和声明类型一致,如上面的等号两边都是int型。N19拜客生活常识网

举个栗子:火车有10个车厢,编号为1-10,变量a代表某个车厢的可容纳人数,p_a就代表第几个车厢。假设a = 100。代表有个车厢装载了100个人,那这个车厢是第几个车厢?通过&我们就可以知道a在(假设)第3个车厢,那么就可以将3赋值给p_a, 也就是p_a = &a。由此,我们便知道了第三个车厢载人100,也就是说,p_a指向的地址空间中存放的值是100。N19拜客生活常识网

以上是指针中最基础的内容,而实际中,如果用不好指针,c++程序员会深受困扰,但如果用得好,就是非常美丽的事情了。c++多态也正是因为有指针才能实现。N19拜客生活常识网

比如:N19拜客生活常识网

Class Base;N19拜客生活常识网

Class A : public Base;N19拜客生活常识网

则Base* pBase = new Base;也可以Base* pBase = new A;这就是多态的基础,即基类指针可以指向子类。N19拜客生活常识网

声明一个指针的方式如:N19拜客生活常识网

int * p;N19拜客生活常识网

double* p;N19拜客生活常识网

或者假设你定义了一个类AN19拜客生活常识网

A* p;则声明了一个可以指向类A的指针p.N19拜客生活常识网

如何给指针赋值?N19拜客生活常识网

A a;N19拜客生活常识网

A* p;N19拜客生活常识网

p = &a;N19拜客生活常识网

那么p的值就是a的地址。或者:N19拜客生活常识网

p = new A;N19拜客生活常识网

则p的值也是A的地址。N19拜客生活常识网

只是上述两种方式实例化对象的方式不同,所分配的内存地址也不同。在运行的程序中,通过new分配的地址在堆空间中,另外一种则是在栈空间中。在堆空间中分配的内存不能自动释放,只能通过delete或delete[]来释放。N19拜客生活常识网

我相信p的使用大家应该都会了,前面也都提到过,后续也会慢慢的再跟大家通过各种形式聊起,今天主要先说说概念。N19拜客生活常识网

指针的内容很多,今天先到这里,(时间太少啊),大家有什么问题可以留言,顺便点点关注, 以后多多交流,一起提高。N19拜客生活常识网

相关阅读:

  • 指针怎么用 c语言指针与一维数组?
  • ABB机器人Compact
  • C++|深入理解智能指针
  • 现在万用表使用非常广泛,但不知道怎么弄,有什么好方法?
  • 单片机时间片轮询任务调度的实现方法
  • 大一想参加学校机器人设计比赛,已经组好队,要学习单片机
  • 回调函数最简单的理解方式
  • 精工5
  • 2022年上半年推出的那些优秀的飞行员手表作品
  • 家乡异地皆乐趣:浪琴Spirit
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。