永发信息网

C语言int a[5],*p; p=a;和p=&a;的对错问题~希望详细点,谢谢啦

答案:6  悬赏:80  手机版
解决时间 2021-03-20 03:42
谭说前者错的……不理解…………
最佳答案
有了int a[5],*p;,p=&a;显然就是错误的。int a[5],*p;说明了a和p都是int *型指针,只是a是常指针,p是指针变量,那么p=a;就合情合理;&a是指向a[5]的指针,与它类型匹配的是int (*)[5],而不是int *。所以p=&a;的等号两边类型不匹配,编译都过不了……
全部回答
不要太相信书上写的话了,遇到问题最好的办法是动手试一试 听过的会忘记,看过的只能记住,只有做过的才能理解
前者是对的,逻辑上两个都是对的,p指向a的地址,a和&a都表示数组地址(数组特有) 怀疑后一个可能编译不过
p=&a,是把a的地址赋给p,再通过*p得到a所赋给p的地址,取a里面的内容 ,对于数组的话好像两个都对的,我用VC6.0编译的时候都通过的
1.int a[10],*p; p=a;//a是首地址 2.int a[10],*p=a;//定义时赋值 3.int a[10],*p; p=&a[0]; 以上都是等效的,没有p=&a的 谭浩强是说前者对
先上结论: 对于int a[5],*p; p=a; 或p=&a[0]是正确的 p=&a严格来说是错误的 首先要搞清楚a与&a的区别:a表示数组首元素的首地址,即元素a[0]的地址;&a表示整个数组的地址。二者的值是相同的,但意义并不一样。正如成都市政府与四川省政府的地址都在成都,但二者表示的含义不同。 如下图所示,a表示a[0]的地址 &a则表示整个数组的地址 二者的值之所以相同,因为地址是取自第一个字节的地址,数组元素a[0]的第一个字节与整个数组的第一个字节显然是相同的。 a与&a[0]及&a的值如下: 1244980,1244980,1244980 a+1与&a[0]+1值如下: 1244984,1244984 但&a+1的值为1245000。 a+1与&a[0]+1都是表示下一个数组元素的地址,以元素为单位相加,地址值+4。而&a+1表示下一个数组的地址,以数组为单位相加,地址值+20. 所以,p=a; 或p=&a[0]是正确的,表示指针p指向数组的首元素。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上海什么时候用电灯的 有电灯才会有电线杆建
醉江南饭店怎么去啊,有知道地址的么
怎么实现网络监控中的视频音频同步
大众宝来仪表盘上黄色的(!)是什么意思?
八字基本平衡,该怎么用神,是不是用不好,八
遇到只认钱不懂亲情的父母你会怎么办呢?
医院岗位类别怎么填
粗吸管在哪里买得到?就是像喝珍珠奶茶的那种
农机建材机电批发部怎么去啊,有知道地址的么
渭南高级中学2018级八班期末成绩单o
白糖怎么除理后吃不太甜
我是纠结伦里说的《其实悲剧不是灭团》是什么
chrome浏览器不显示QQ邮箱的邮箱设置,联系人
人参,鹿茸,鹿鞭可以一起吃吗,该怎样吃
怎样用电脑画设计图
推荐资讯
刚买的捷安特牌电动车,捷安特电动车133s给配
生豆油加凉水喝了会怎么样
求找一本小说。女主以为自己穿越到古代,死后
家庭装修水电只做工多少钱一平方 我是给装饰
乡科级公务员可以转为事业编制吗
公交学生卡一天可用几次?
苹果6s还是卖vivo x7哪个好
绵影综合商店在什么地方啊,我要过去处理事情
怎么能教育我的狗狗不吃死耗子
有谁用过紫砂保温杯吗?会保温吗?
一个见面四次的男医生和我每天在微信聊天,持
剑三气纯如何把体质加起来,又不怎么影响内功
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?