登陆注册
77391200000050

第50章 指针(四)

但凡涉及到和内存相关的知识时,老爹都会使用PPT绘制图形来辅助讲解。如果没有那些图的话,理解起来还是有一些困难。

「就然说到这里,就顺便提一下指针的自加和自减。我们先回顾一下普通变量的自加和自减:

int a = 10;

对于a++等效于a = a + 1,a--等效于a = a - 1。

那么对于指针变量

int* p =&a;

来说也是一样的

p++等效于p = p + 1,p--等效于p = p - 1。

而我们刚刚才说过,对指针做加减运算,实际上是按照指针指向的数据类型为单位上下移动,如果我们再配合*的话,也可以对数组进行赋值或者取值,你比如说:

int arr[5];

int* p = arr;

int i = sizeof(arr)/ sizeof(arr[0]);

while(i--> 0)

{

scanf(%d, p++);

}

注意这里面有个两个需要关注的地方,首先是老爹用sizeof来获取了一个数组占用内存的字节数,如果这个地方换成sizeof(p)话,只会得到p这个变量占用的内存字节数,这是指针和数组名的区别之一。

第二点,数组名是不可以做自加和自减操作的,不信你们可以把scanf函数中的p++换成a++,绝对会出错。」

虽然老爹无比笃定,但本着不「事不目见耳闻而臆断其有无」的原则,我尝试了一下,果然是报错了。

「那为什么会这样呢?」

「这个嘛,老爹也没有看到过C语言是如何管理数组的,但是老爹猜测,arr是一个被const修饰的指针,何以见得?如果我们对变量p进行如下修改,就会发现p也不能执行自加自减操作了。

int* const p = arr;」

「const会将一个变量变成常量,如果修饰一个指针是不是指针也变成了常量?」

一直都沉默不语的小弦子出声问道。

「的确是这样,和普通变量一样,一个指针变量被const修饰后就变成了一个指针常量,那么我们就只能为其初始化一次,就不能再修改这个指针指向的地址了。例如:

int a = 0;

int b = 1;

int* const p =&a;

p =&b;

在执行最后一行代码的时候肯定会出错,因为指针变量被const修饰,并且已经为其赋值为变量a的地址了,就不能再做修改,这个应该看得懂吧?」

见我和小弦子都点了点头,老爹又接着说道:「虽然p指向的地址是不能再修改的,但并不影响我们修改这个地址对应的变量的值。换句话说:

*p = 3;

*p = 4;

是不会出错的!」

「老爹你等等,我感觉有点绕了。」

我突然觉得画风转变得有点快,让人触不及防,怎么就一下子就听不明白了呢?

「这样啊,那我们来举个例子好好捋一捋这其中的道道。

假设哈,我是假设我们有一把万能钥匙,这把钥匙能够打开所有的保险箱。」

「哇哦,那样的话我们不是发财了么?那我们还编什么程啊,直接开个专业开保险柜的店不就好了么?但凡遇到找我们开保险柜的,都收百分之一的手续费,每天数毛爷爷手都得数抽筋。」

别的不说,我入戏的速度还是很快的,老爹刚刚才做完设定,我就快速想好了下面的剧情。

「你看不管是电视剧还是动漫,但凡那些坐拥宝物但是却没有对应守护宝物的实力,最终的下场一般都是家破人亡。」

就在这个时候,小弦子幽幽说道。他的声音就像是一盆冰水当头淋下,把我编织的美好幻想冻得支离破碎。

「这20后的小孩儿10岁都能知道这么多的东西么?」

老爹捂着额头,很是无语地看着我和小弦子。

「哎呀,老爹,现在都2032年了,6G技术都已经投入商用了,你的思想不能还停留在上个世界90年代撒。」

「别打岔,先听我把例子说完!」

趁着老爹看他自己电脑的时候,我偷偷地吐了吐舌头,还向他做了个鬼脸。

「好景不长,犹豫你保管不善,这把万能钥匙损坏了,到最后就只能打开一个保险柜咯。

我们姑且认为,这把钥匙就是一个指针变量,一开始它可以指向任何保险柜,但是在损坏后就只能打开那个唯一的保险柜了,这就和被const修饰了一样。

那么问题来了,难道因为钥匙只能打开唯一的保险柜了之后,咱们就不能修改保险柜里面的内容了么?」

「哦,原来是这个意思么?那我明白了。」

我若有所思的点了点头。

「明白了?」

「嗯~」

「真的明白了?」

「嗯~」

「咱们欢乐加倍,来看看以下四种情况:

int* const p;

int const* p;

const int* p;

int const* const p;」

「我勒个去,这个都是些什么鬼?」

看着投影仪上面的这四句代码,除了刚刚讲过的第一句以外,其他三句在刹那间让我进入懵逼状态。

一旁的小弦子也好不到哪里去,连举着的杯子都停在了嘴边,一时间忘记了喝水。

「跌倒了没?崩溃了没?」

看着我和小弦子的表情,三十多岁的老爹居然开始幸灾乐祸。看这样子,是要把他当年受过的虐转移到我们身上啊。

「哈哈,你们这表情就跟当年我参加二级考试遇到这道题时的表情一模一样,不瞒你们说,事后我认真的研究过,结果久了不用,很快就忘了。等到大学毕业找工作的时候,面试时我再次在此败下阵来。

后来我痛定思痛,终于总结出来了一个小技巧。」

「什么技巧啊?」

我眼睛瞬间就开始放光了,仿佛看到了绝世珍宝。

「好吧,那我就将老爹历经数载悟出的真谛传授于你们,希望你们能替老爹我发扬光大。

但凡遇到指针和const,咱们就把代码倒过来读,也就是从由往左读,遇到*就替换为『指向』二字。

按照这个规则,第一句读出来就是:p是一个常数,指向一个int类型。就然p是一个常量,那么它的值(指向的地址)是不能够改变的,但是被它指向的地址中的内容(保险柜中的内容)修改不受到限制。

那你们来试试后面的。」

「p是一个指向int型常量的变量……」

「对头,咱们来做一个你们最熟悉的缩句,最终的结果是……」

「p是一个变量。」

「冰狗,对了。既然p是一个指针变量,它指向的地址自然是可以改变的,但是它指向的是一个int型常量,所以*p = 5这种赋值操作肯定就不行了。」

同类推荐
  • 我们暖暖洋洋

    我们暖暖洋洋

    她挣扎过,努力过,放弃过,可是,在梦想最底层的她,黑暗的独木桥走到头时,她看见的是光明吗?
  • 江城的月光

    江城的月光

    急诊科的蓝色拉帘背后,是裴静每日忙碌的地方。她是一名普通医生,也是一个三岁女孩的母亲。江城疫情危殆,她义无反顾地披上白大褂,昼夜星辰北上,只为当初她在父亲灵位前许下的誓言。生与死的边缘之上,是并肩作战的医护,不眠不休的外卖小哥,无私奉献的快车司机,还有许许多多普通人热血铸就的坚毅人墙。有记者问她:“你想家了么?”她忍下热泪,转头只留下一个急行的背影:“有国才有家。”
  • 影响一生的童年

    影响一生的童年

    父母双亡的小女孩,与三个哥哥相依为命,一路走来的艰辛与坎坷最终的顿悟人生。
  • 苏醒树

    苏醒树

    苏醒树是植物界的一个奇葩,老话说人挪活树挪死,但苏醒树不同。就像故事中的一对恋人,为了生活,不得不选择将自己连根拔起
  • 苞小米成长记

    苞小米成长记

    苞小米点滴日常生活记录留着以后给孙女看嘎嘎
热门推荐
  • 伯贤你是我的sunshine

    伯贤你是我的sunshine

    苏雅凌,一只千年冰狐,体内含有死去父母和自己的内丹,就相当于有了2500年的灵力。从小就遇到了两个朋友,吴香凝,萧诺儿苏雅凌、吴香凝、萧诺儿三人一同去人间玩当三人到达人间的时候,萧诺儿趁苏雅凌和吴香凝刚到人间不适应的时候,乘机偷袭她们,吴香凝为了保护苏雅凌,情急之下,把苏雅凌推到一个陌生的地方,而自己被萧诺儿打回原形。然后苏雅凌就遇到exo
  • 黑猫先生奇遇记

    黑猫先生奇遇记

    丈夫出轨,意外流产,苏可可从未想过会跟相恋八年的男人离婚。撕破脸皮后,苏可可意外领养了一只黑猫,不料又被卷入一场爱恨纠葛之中。【1vs1,HE】【首次写文请轻拍。努力日更,绝不弃坑。】【喜欢的小伙伴欢迎收藏、评论、推荐哟!】
  • 重生之魂兽世界神级驯兽师

    重生之魂兽世界神级驯兽师

    2078年,32岁的王玺因为小女孩冲向快要撞上卡车的时候推开了她,而自己却只能死去,上天眷顾了他,重生到了魂兽世界,契约师也分等级180魂值是未成年的极限,但王玺可以超越极限里面魂兽分黑铁、白银、黄金、铂金、耀金、黑金、史诗、传说、神分别为9个阶级,刚开始王玺就获得了系统,可世界却是2060年,也就是说王玺才14岁,他会遇到什么样的挑战呢?(由于作者在上学的年纪,而且还是最紧张初中最后一年,更新速度可能很慢,还请读者多多包涵)
  • 修真界第一妖孽

    修真界第一妖孽

    漫漫仙途,尽是白骨铮铮。仙,到底是什么?带着史上最邪恶的血脉,他由石中归来。他要告诉这满天的仙佛。他,又回来了!
  • 致姗姗来迟的你(下)

    致姗姗来迟的你(下)

    人气小天后蓝白色都市暖爱时尚力作。“恐男症”患者连笑平日有多正经,喝醉后就有多放荡不羁,不是逮着陌生人又亲又抱,就是失去理智地狂揍对方。与方迟的交集,便始于她酒后闯入男厕对他上下其手……得罪冰山脸的后果可想而知——连笑被方迟极尽差使之能事,废材的她莫名其妙地成了二十四孝邻居。更意想不到的是,她把他当作“男闺蜜”,却被他一而再地以吻封唇,美其名曰治疗她的“恐男症”:“我会亲到你不打嗝为止。”她曾是他无望中的救赎,如今该由他,带她走出封闭的自我。连笑终于恍悟,原来这个男人,一直在替她遮风避雨,帮她力挽狂澜,为她保驾护航……茫茫人海中,唯有独一无二的方迟,让她真真切切地体会到,何谓悸动。原来姗姗来迟的不是他,而是她遗失已久的怦然心动。
  • 黑夜中的泡沫

    黑夜中的泡沫

    “有我在,整个世界都是你的。”她清纯的目光,融化了他冷漠如冰的心。他柔和的话语,包裹了她伤痕累累的梦。她是他此生的执念,纠缠在她的年华;他是她隔世的眷念,碾转在他的天涯。然而,究竟是谁冰冷的话语湿润了谁的眼眶,谁绝情的目光斩断了谁的退路。他用谎言为她织出的湛蓝天空,终于碎裂……易水人去,不过情伤。被岁月覆盖的花开,白驹过后变成空白。“如果我知道结局会是这样,在当初就不该和你相遇。”
  • 驱魔者也

    驱魔者也

    刘易阳,在成为一个驱魔者之前是一个即将毕业的三流大学生,在学校他被成为败类,最擅长的就是睡觉,后来有一天他当了驱魔人,在驱魔者的圈子里,他依然是个败类,混吃等死的败类,只到有一天,在他体内的一个诡异的力量被唤醒后,这个败类驱魔者开始在都市里,与人斗,与鬼斗,甚至杀入冥府,成为了一个驱魔者里的人生赢家。
  • 执烬花开觅茫茫

    执烬花开觅茫茫

    十年前的除夕夜,少室山第一仙门苏家,一夜之间满门被屠,只余苏家独女苏锦念被救而活了下来,被迫一夜成长,承受着世人的唾弃、格杀,成长之路,幸得少年宗主夜无眠所伴,而那血腥的背后,隐藏于人性内心的私欲、贪婪、嫉妒皆被缓缓揭开……
  • 炮灰驸马欢乐多

    炮灰驸马欢乐多

    天上天下最拽少爷,身份优越至极的纨绔仙二代,可惜干的都是神马?不学无术,浪荡不羁,逼死大龄公主,气疯天尊~谁能将其收服?——看腐萌少女如何御刁神!
  • 幻象刑警

    幻象刑警

    刑警江一山,本是派出所的小刑警,突然有了“双视”超能力,并以此破获多起案件。后被迫“穿越”,多场景不停切换,让其再次破获大案。在不受自我控制下,更夸张地“穿越”,时间空间都发生变化,最后回到他的母体宇宙……