手机浏览器扫描二维码访问
但凡涉及到和内存相关的知识时,老爹都会使用ppt绘制图形来辅助讲解。如果没有那些图的话,理解起来还是有一些困难。
「就然说到这里,就顺便提一下指针的自加和自减。我们先回顾一下普通变量的自加和自减:
inta=10;
对于a等效于a=a1,a--等效于a=a-1。
那么对于指针变量
int*p=&a;
来说也是一样的
p等效于p=p1,p--等效于p=p-1。
而我们刚刚才说过,对指针做加减运算,实际上是按照指针指向的数据类型为单位上下移动,如果我们再配合*的话,也可以对数组进行赋值或者取值,你比如说:
intarr[5];
int*p=arr;
inti=sizeof(arr)sizeof(arr[0]);
while(i-->0)
{
scanf(%d,p);
}
注意这里面有个两个需要关注的地方,首先是老爹用sizeof来获取了一个数组占用内存的字节数,如果这个地方换成sizeof(p)话,只会得到p这个变量占用的内存字节数,这是指针和数组名的区别之一。
第二点,数组名是不可以做自加和自减操作的,不信你们可以把scanf函数中的p换成a,绝对会出错。」
虽然老爹无比笃定,但本着不「事不目见耳闻而臆断其有无」的原则,我尝试了一下,果然是报错了。
「那为什么会这样呢?」
「这个嘛,老爹也没有看到过c语言是如何管理数组的,但是老爹猜测,arr是一个被const修饰的指针,何以见得?如果我们对变量p进行如下修改,就会发现p也不能执行自加自减操作了。
int*constp=arr;」
「const会将一个变量变成常量,如果修饰一个指针是不是指针也变成了常量?」
一直都沉默不语的小弦子出声问道。
「的确是这样,和普通变量一样,一个指针变量被const修饰后就变成了一个指针常量,那么我们就只能为其初始化一次,就不能再修改这个指针指向的地址了。例如:
inta=0;
intb=1;
int*constp=&a;
p=&b;
在执行最后一行代码的时候肯定会出错,因为指针变量被const修饰,并且已经为其赋值为变量a的地址了,就不能再做修改,这个应该看得懂吧?」
见我和小弦子都点了点头,老爹又接着说道:「虽然p指向的地址是不能再修改的,但并不影响我们修改这个地址对应的变量的值。换句话说:
*p=3;
*p=4;
是不会出错的!」
「老爹你等等,我感觉有点绕了。」
我突然觉得画风转变得有点快,让人触不及防,怎么就一下子就听不明白了呢?
「这样啊,那我们来举个例子好好捋一捋这其中的道道。
假设哈,我是假设我们有一把万能钥匙,这把钥匙能够打开所有的保险箱。」
「哇哦,那样的话我们不是发财了么?那我们还编什么程啊,直接开个专业开保险柜的店不就好了么?但凡遇到找我们开保险柜的,都收百分之一的手续费,每天数毛爷爷手都得数抽筋。」
梦灾末世生存指南 张钟颖 衫生诡 王妃称心 嗣子荣华路 阴阳眼小师妹 龙婿陆凡 青梅千千结 大佬甜妻宠上天 夫人的病今天好了吗 戚风童话 四龙攒凤 我的蛮荒部落 迟宠 上门龙婿陆凡 异界烽火录贰烽云再起 最强豪婿陆凡 韩娱之聚光 顾九辞霍明澈 校园全能马甲女神
身怀无上绝技,驾驭超强熊猫仙兽,超逗小神医带你一起闯天涯,花花世界我来了。...
大姐白子柒,荣登福布斯富豪榜,霸道总裁。二姐夏娉婷,顶级杀手。三姐李羽真,中医圣手。四姐楚灵儿,超级大明星。五姐苏清荷,国际黑暗世界女皇,号称罗刹。六姐方涵,是个智商高达两百的天才,在各种艺术方面有超高造诣。七姐秦楚楚,身份神秘叶萧自己,全球黑暗世界的王者修罗!...
出生在末世爆发百年后黑暗纪元的秦羽在一次狩猎中死亡,重生到了末世爆发的第一天。一场血雨降临,死去的人重新站了起来,渴望着鲜美的血肉,生命物种发生变异,凶猛的变异兽肆虐,更有来自异空间的强大异族虎视眈眈。文明毁灭,道德崩丧,人类是否能在残酷的末世中延续下去?是成为冷酷的恶魔还是仁慈的救世主?进化的极限是天堂还是地狱?...
一个人穿梭在两个时空,一个是宋代,一个是现代。许久之后,那人居然不知哪个是宋代,哪个是现代。到底是现代变成了宋代,还是宋代变成现代。也许只有您知道,当然是在您细致阅读完此书的前提下。...
司先生的无赖小甜妻一朝诡异重回二十二岁,还在醉酒的时候招惹上了一位高冷的病弱总裁??大总裁什么都好,就是身体娇弱易推倒还认为她别有所图,要把她放在眼皮子底下看着。这倒是其次,最关键的是,大总裁,你为什么没看上我,却看上了我做的菜!...
大唐天朝,万国膜拜!我是时代的符号!异族犯边,哀鸿遍野!我执朴刀荡贼寇!勾心斗角,满朝文武!我以丹心照明月?王公侯爵,谁是一人之下万人之上?士农工商,谁立风口浪尖力掌乾坤?我是李二的结拜兄弟,我是大唐九千岁!...