野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: 山外メ雲ジ

【每日一题讲解】数组名加减的问题

  [复制链接]
发表于 2017-7-31 14:33:32 | 显示全部楼层
a~!@??
回复

使用道具 举报

发表于 2017-7-31 19:51:21 | 显示全部楼层
学习学习
回复

使用道具 举报

发表于 2017-8-2 21:56:56 来自手机 | 显示全部楼层
1不知道对不对
回复 支持 反对

使用道具 举报

发表于 2017-8-3 15:14:08 | 显示全部楼层
这道题的答案应该是C吧。
回复 支持 反对

使用道具 举报

发表于 2017-8-3 19:58:45 | 显示全部楼层
答案是1,ptr=a1
回复 支持 反对

使用道具 举报

发表于 2017-8-3 20:47:50 | 显示全部楼层
1111111111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2017-8-3 22:16:10 | 显示全部楼层
选C选C选C选C
回复 支持 反对

使用道具 举报

发表于 2017-8-4 15:51:25 | 显示全部楼层
d,对&a不是很理解
回复 支持 反对

使用道具 举报

发表于 2017-8-4 16:37:08 | 显示全部楼层
感觉这个题目要错 理论知识太不扎实
回复 支持 反对

使用道具 举报

发表于 2017-8-5 19:41:48 | 显示全部楼层

//运行以下程序,求运算结果

char a[4]={1,2,3,4};
char *ptr=(int*)(&a+1);
printf("%d",*(ptr-1));

//可供选择的答案:
//A.1
//B.2
//C.4
//D.随机值
回复 支持 反对

使用道具 举报

发表于 2017-8-6 21:22:53 | 显示全部楼层
没理解到 (int*) 的作用啊,  这里为何要类型指派?
&a+1 指向 (*)[4] 类型的下一个元素,  即 内存单元a+4的地址。这些我是能l理解。
回复 支持 反对

使用道具 举报

发表于 2017-8-11 08:59:31 | 显示全部楼层
可能是1,然而其实我不确定
回复 支持 反对

使用道具 举报

发表于 2017-8-11 19:40:34 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2017-8-21 12:17:13 | 显示全部楼层
是1吗??????????????
回复

使用道具 举报

发表于 2017-9-24 09:59:15 | 显示全部楼层
44444444444444
回复 支持 反对

使用道具 举报

发表于 2017-9-24 10:30:31 | 显示全部楼层
看答案,有点难
回复 支持 反对

使用道具 举报

发表于 2017-9-24 10:52:08 | 显示全部楼层
研究了一下
&a+1,相当于加了数组的一个单位(也就是一行),即&a[4],
(int*)(&a+1)将&a[4]转化为指向int类型的指针,再赋值给char*类型的ptr,
ptr-1则指向a[3], 所以答案为4
回复 支持 反对

使用道具 举报

发表于 2017-9-24 17:07:59 | 显示全部楼层
选择b,int变量两个字节,(&a+1) 是a【3】的地址,于是输出2,选择b
回复 支持 反对

使用道具 举报

发表于 2017-9-24 20:58:22 | 显示全部楼层
A                                 
回复 支持 反对

使用道具 举报

发表于 2017-9-24 22:28:20 | 显示全部楼层
答案是4,我看看是不是对的
回复 支持 反对

使用道具 举报

发表于 2017-9-25 09:23:29 | 显示全部楼层
真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2017-9-25 15:36:20 | 显示全部楼层
answer:C
回复

使用道具 举报

发表于 2017-9-25 16:46:34 | 显示全部楼层
新手入门            
回复 支持 反对

使用道具 举报

发表于 2017-9-25 20:24:05 | 显示全部楼层
随机数吧,
回复

使用道具 举报

发表于 2017-9-25 22:52:32 来自手机 | 显示全部楼层
我猜应该是A吧?
回复 支持 反对

使用道具 举报

发表于 2017-9-25 22:54:07 来自手机 | 显示全部楼层
咦?我猜应该是a?
回复 支持 反对

使用道具 举报

发表于 2017-9-25 23:47:47 | 显示全部楼层
我的回答是A...........
回复 支持 反对

使用道具 举报

发表于 2017-9-26 08:27:42 | 显示全部楼层
这个遇见过,看看答案
回复 支持 反对

使用道具 举报

发表于 2017-10-7 22:02:02 | 显示全部楼层
A
&a+1是2的地址,*ptr指向了2的地址,ptr-1又指向了1,所以*(ptr-1)应该是1.
不知道对不对。
回复 支持 反对

使用道具 举报

发表于 2017-10-11 09:57:29 | 显示全部楼层
我算的是a,不会又错了吧
回复 支持 反对

使用道具 举报

发表于 2017-10-11 09:57:54 | 显示全部楼层
我算的是a,不会又错了吧
回复 支持 反对

使用道具 举报

发表于 2017-10-13 17:04:06 | 显示全部楼层
走过路过不能错过
回复 支持 反对

使用道具 举报

发表于 2017-10-14 12:34:44 | 显示全部楼层
AAA     


回复 支持 反对

使用道具 举报

发表于 2017-11-9 16:37:05 | 显示全部楼层
数组名是数组首元素的地址,也就是说a是数组元素1的地址,a + 1表示数组第二个元素2的地址,&a此处的a代表的是整个数组,大小表示为4字节,&a + 1已经超出数组范围,来到了a[5],然后prt指向a[5]的地址*(prt - 1)即是a[4],是一个随机值
回复 支持 反对

使用道具 举报

发表于 2017-11-11 14:48:40 | 显示全部楼层
答案应该是A。1吧
回复 支持 反对

使用道具 举报

发表于 2017-11-11 17:35:05 | 显示全部楼层
c,这个题目刚好老师给我们做过一个类似的项目
回复 支持 反对

使用道具 举报

发表于 2017-11-11 18:01:30 | 显示全部楼层
好好学习 天天向上
回复 支持 反对

使用道具 举报

发表于 2017-11-11 20:21:33 | 显示全部楼层
B,指向1得2,然后减一,即为1,所以答案为二?
回复 支持 反对

使用道具 举报

发表于 2017-11-12 19:07:48 | 显示全部楼层
学习一下,看看答案是啥
回复 支持 反对

使用道具 举报

发表于 2017-11-29 00:16:29 | 显示全部楼层
看看答案?。。。
回复

使用道具 举报

发表于 2017-11-29 10:13:39 | 显示全部楼层
输出的时候-1,那个地方是不是地址减去4个字节  有点懵啊
回复 支持 反对

使用道具 举报

发表于 2017-11-29 10:14:49 | 显示全部楼层
不知道输出的时候是不是地址减去了4个字节,有点懵啊
回复 支持 反对

使用道具 举报

发表于 2017-11-29 14:14:49 | 显示全部楼层
指针真心理解不好
回复 支持 反对

使用道具 举报

发表于 2017-12-4 18:06:47 | 显示全部楼层
当然是随机值啦,,,,,
回复 支持 反对

使用道具 举报

发表于 2017-12-8 10:52:13 | 显示全部楼层
这个就比较骚了 不过我并非浪得虚名,  答案是4
回复 支持 反对

使用道具 举报

发表于 2017-12-8 16:41:04 | 显示全部楼层
答案是A吗? 瞅瞅正确答案
回复 支持 反对

使用道具 举报

发表于 2017-12-12 14:11:08 | 显示全部楼层
额  则会个
回复 支持 反对

使用道具 举报

发表于 2017-12-14 11:20:41 | 显示全部楼层
printf("%d",*(ptr-1));
输出 4
回复 支持 反对

使用道具 举报

发表于 2017-12-15 10:10:43 | 显示全部楼层
A                     
回复 支持 反对

使用道具 举报

发表于 2018-3-5 01:23:59 | 显示全部楼层
谢谢分享,学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-26 20:55 , Processed in 0.042271 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表