永发信息网

*p1=a[3]与p1=&a[3]什么区别???

答案:5  悬赏:80  手机版
解决时间 2021-03-31 15:02
*p1=a[3]与p1=&a[3]什么区别???
最佳答案
*p1=a[3] ; 看你想做什么呢?定义的话,a[3]里存放是你希望p1所指向的合法地址吗?不是的话当然出错。 不是定义是运算的话,表示将a[3]的内容赋值到p1所指向的内存单元,如果该单元禁止访问也会出错。
p1 = &a[3]明确表示了将该单元自身的地址赋给p1,合法;
指针使用的时候需要确定其所指单元合法,否则会出错。
指针定义的时候赋初值也要考虑该初值的合法性
全部回答
前一个,指针p1你怎么知道它会指向哪呢?就有可能造成内存越界,运行时就会提示内存出错;
第二个则是指定p1指向a[3].追问*p1=a[3]难道不是是指针p指向a的第3个元素???
你的p1是一个指针吗?
*p1=a[3];是说将数组a的第三个元素放到p1这个指针指向的内存空间中.
我想你的p1肯定没指向空间,只是一个申请的指针.所以*p1=a[3];内存出错,因为p1根本没指向一块被申请的内存.p1=&a[3]是将一个地址给了p1所以没问题.你记着,指针本身只能存放一个地址,如果你要让他放一个变量,必须让他先指向一块地址.不能申请了就拿来放东西.
换个说法让你理解更深刻:
指针就相当于箱子的编号,编号就是内存地址,而变量就是放东西的箱子.
如果你只有一个箱子的编号,而根本没设定一个箱子.那么你想你能在编号里放东西否?
你这里p1是指针。指针存储的是地址 p1=&a[3] 就是把a数组的第4个元素的地址存进p1中
*p1是指p1存储的地址所表示的值。
比如说p1=&a[3] *p1=5;这就相当于把5赋值给数组a的第四个元素
但假如直接是int *p;
*p =5 ;的话。 这样就很危险了。 因为你声明一个指针p 里面本身会有一个值。 这个值是随机的某一个地址 然后把这个随机的地址里面的值改为5 。 这个随机的值可能是系统所必须得,而我们却把它改了。,所以很可能造成系统崩溃的。 所以会提示内存出错。 这也就是慎用指针的原因了。
p1是个指针变量,指针变量指向的是内存地址,所以
p1=&a[3]是正确的。&为取地址符号。
而a[3]是一个整型常量,*p1是个地址,所以不能直接赋值。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
江淮货车打不着火,是什么原因?
有没有女主是萌萌的软妹子就像绝对双刃的女主
第1至第7名依次分到高一(1)班至高一(7)班,第
〆﹏じò ぴé╰EXO是什么意思?
我置换了车,今天4S店给过户上牌了,指标什么
阿穆尔俄罗斯商行地址在哪,我要去那里办事,
求EXO所有歌曲的吉他谱,图片六线谱,要清楚
暑假看什么书
2018年u23亚洲杯最新战况
六七天的小猪能不能做猪瘟蓝耳疫苗?
梦见锅里有满满一锅水溢出来了
电脑老音箱里面老是有响声,过几分钟响一下,
刘备究竟是君子还是小人
乙酰水杨酸制备需注意的问题
服务类上岗证多少钱
推荐资讯
玉林至武汉火车要几个钟
lg10÷lg5=多少
北京中融信担保有限公司怎么样有没有这样的公
magento与zen-cart区别建站选择哪个好?
度云的朋友们,要求国产,悠悠的
龙袍在古代的是用什么做的,在当时需要花什么
SQL如何判断一行数据是否存在
学霸这是夸人的嘛
油炸糖油粑粑怎么做
日语的~甜甜怎么说呢
国债用还不?
江苏苏净公司的待遇怎么样?这个公司有没有发
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?