咖趣阁

手机浏览器扫描二维码访问

第四十九章 指针四(第1页)

但凡涉及到和内存相关的知识时,老爹都会使用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的地址了,就不能再做修改,这个应该看得懂吧?」

最新更新
热门小说推荐
恶灵宝可梦

恶灵宝可梦

富江怎么会有这么可爱的男孩子,本恶灵竟然也会让步。丁成嘻嘻,我装的。富江???本书又名总是撞上恶灵但我一点不慌宠物小恶灵恶灵的灾难来了...

高武之史上最强召唤

高武之史上最强召唤

本书设定为高武世界!非都市装逼文,慎点!)恭喜加入诸天名媛拼单群小乔小哥哥,人家身娇体柔,能打能抗!貂蝉我沉鱼落雁,可以召唤吕布放无双大招!武则天朕有雄兵百万,能助你横扫诸天!花木兰告诉我你想杀谁,二更别君三更回!诸天名媛小哥哥,请带上我们,一起装杯一起飞!!杨青时无奈,其实我真的只想做条安静的咸鱼...

都市里的魔导师

都市里的魔导师

一个异界由于特殊体质而造就的少年魔导师。一个原本无拘无束,以研究稀奇古怪魔法和调戏贵族少女为乐的公子哥。却在一次战争中由于使用了超禁术的空间魔法而逆穿越到了我们所属的世界。面对陌生的世界陌生的人陌生的规则陌生的情感。当黑暗的力量觉醒以及末日的谣言充斥我们的世界。他的意外出现,又将给这个时代带来怎样待定或者注定的变化?纯洁党出品,完本保证,请放心收藏阅读。...

踏破天

踏破天

阴魂阳魄,大道至简。异界纷纭,天道无常。踏破天,碎虚空,追源溯本之路,精彩纷呈。本书设定魂力等级低级中级高级特级一阶二阶三阶直至九阶等级越高,寿命越长,且能修炼更强魂力技能。前四级阳寿不上千,后面每阶增长1000岁,直至9000岁。魄力等级魄力值的位数减去一,就是对应的魄力等级更详细的设定,请看作品相关...

医药空间:神医小农女

医药空间:神医小农女

现代鬼医圣手穿越成了小农女,家徒四壁穷困潦倒,握握小拳头,赚钱要紧。意外从山上捡来个男人,从此被缠上,其曰看光本世子的身子,就得负责!某人...

每日热搜小说推荐