野火论坛

 找回密码
 注册

扫一扫,访问微社区

 
查看: 12440|回复: 1113

【每日一题】考查数组和指针

  [复制链接]
发表于 2015-5-21 18:37:27 | 显示全部楼层 |阅读模式
求这段程序的输出:
  1. main
  2. {
  3.     int a[5] = {1,2,3,4,5};
  4.     int *ptr = (int*)(&a+1);
  5.     printf("%d,%d ",*(a+1),*(ptr-1));
  6.     }
复制代码


游客,如果您要查看本帖隐藏内容请回复

回复

使用道具 举报

发表于 2015-5-23 20:20:44 | 显示全部楼层
a是数组的首地址,&a是整个数组的地址,*(a+1)=a[1]=2,(int *)是强制转换为整型,(&a+1)已经超出了原先定义的范围,(&a+1)=a[5],*(ptr-1)=a[4]=5
回复 支持 9 反对 0

使用道具 举报

发表于 2015-5-22 13:46:46 | 显示全部楼层
为什么我觉得是2和1啊
ptr指向的是数组a的地址加1啊
那ptr-1不就是a的地址么
啊,不对 我发现了
强制转换 那ptr指向的应该是a[5]后面的地址
所以ptr-1就是a[5]
好题目!!!
回复 支持 3 反对 0

使用道具 举报

发表于 2015-5-22 19:17:31 | 显示全部楼层
第一个是2,很简单,
第二有大端和小端的问题,假设是小端的话答案是4,
回复 支持 0 反对 2

使用道具 举报

发表于 2015-5-28 08:23:38 | 显示全部楼层
运行结果为2 1
回复 支持 0 反对 2

使用道具 举报

发表于 2015-5-23 00:03:31 | 显示全部楼层
&a即数组的首地址,&a+1就是a的地址加上1*4,即指向a[4]的地址,所以*(Ptr-1)=a[3]=4,而*(a+1)用指针的形式,则*(a+1)=a[1]=2;看答案验证下
回复 支持 0 反对 1

使用道具 举报

发表于 2015-5-22 09:22:08 | 显示全部楼层
2 , 5 。程序运行到第四行后,ptr指向a[5],*(a+1)相当于a[1]
回复 支持 反对

使用道具 举报

发表于 2015-5-22 10:02:36 | 显示全部楼层
输出 2 和 5,嘿嘿,
回复 支持 反对

使用道具 举报

发表于 2015-5-22 10:58:46 | 显示全部楼层
指针是数组的首地址
回复 支持 反对

使用道具 举报

发表于 2015-5-22 11:19:23 | 显示全部楼层
2和5,ptr指向数组a的下一位,所以ptr-1指向数组a的最后一位
回复 支持 反对

使用道具 举报

发表于 2015-5-22 13:55:43 | 显示全部楼层
2,5                       
回复 支持 反对

使用道具 举报

发表于 2015-5-22 14:38:40 | 显示全部楼层
不知道强制转换的用处
回复 支持 反对

使用道具 举报

发表于 2015-5-22 21:13:17 | 显示全部楼层
2 5 看下做对了没
回复 支持 反对

使用道具 举报

发表于 2015-5-23 08:20:29 来自手机 | 显示全部楼层
是2 ,1吧         
回复 支持 反对

使用道具 举报

发表于 2015-5-23 09:44:47 | 显示全部楼层
进来学习下
回复 支持 反对

使用道具 举报

发表于 2015-5-23 10:23:53 | 显示全部楼层
应该牵扯到下一个数组了吧
回复 支持 反对

使用道具 举报

发表于 2015-5-23 19:27:20 | 显示全部楼层
输出为2和5
回复 支持 反对

使用道具 举报

发表于 2015-5-24 12:40:50 | 显示全部楼层
想知道答案
回复 支持 反对

使用道具 举报

发表于 2015-5-24 23:09:13 | 显示全部楼层
2,5.看看答案
回复 支持 反对

使用道具 举报

发表于 2015-5-25 23:42:31 | 显示全部楼层
不懂,想知道答案,应该是2,5吧
回复 支持 反对

使用道具 举报

发表于 2015-5-26 20:44:05 | 显示全部楼层
2   1、、、
回复 支持 反对

使用道具 举报

发表于 2015-5-27 14:31:42 | 显示全部楼层
不知道,支持。。。。。
回复 支持 反对

使用道具 举报

发表于 2015-5-28 09:21:09 | 显示全部楼层
应该是2和5,&a+1的意义不是很明白
回复 支持 反对

使用道具 举报

发表于 2015-5-28 10:50:27 | 显示全部楼层
每天学习一点,进步一点。
回复 支持 反对

使用道具 举报

发表于 2015-5-28 13:34:08 | 显示全部楼层
markvmarkmarkmarkmarkmarkmark
回复 支持 反对

使用道具 举报

发表于 2015-5-28 13:35:41 | 显示全部楼层
6666666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2015-5-28 15:42:44 | 显示全部楼层
1,1               ?????????????????
回复 支持 反对

使用道具 举报

发表于 2015-5-28 22:41:59 | 显示全部楼层
2和1 对不哟!
回复 支持 反对

使用道具 举报

发表于 2015-5-29 13:47:22 | 显示全部楼层
(&a+1)已经超出了原先定义的范围,这句话表示不懂啊,求教
回复 支持 反对

使用道具 举报

发表于 2015-5-29 16:02:18 | 显示全部楼层
2,5
*(a+1) = a[1];
*(ptr-1) = *(&a[4]+4-4) = a[4];
回复 支持 反对

使用道具 举报

发表于 2015-5-29 21:46:36 | 显示全部楼层
*(a+1)=a[1],所以是2,后面的就是不知道了
回复 支持 反对

使用道具 举报

发表于 2015-5-30 11:14:19 | 显示全部楼层
答案应该是2,1
回复 支持 反对

使用道具 举报

发表于 2015-5-30 11:36:15 | 显示全部楼层
走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2015-5-30 14:03:04 | 显示全部楼层
我觉得应该是 2, 5
回复 支持 反对

使用道具 举报

发表于 2015-5-30 23:16:14 | 显示全部楼层
111111111111111111111111111111111111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2015-6-2 11:20:51 | 显示全部楼层
*(a+1) 输出是2,*(ptr-1)就不是很明白了,a本来就是地址,&a是什么意思呢
回复 支持 反对

使用道具 举报

发表于 2015-6-2 16:13:58 | 显示全部楼层
输出是2和5,对吗
回复 支持 反对

使用道具 举报

发表于 2015-6-2 19:45:36 | 显示全部楼层
2,1对吗?                                                      
回复 支持 反对

使用道具 举报

发表于 2015-6-2 20:24:09 | 显示全部楼层
应该是2和5吧
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|野火论坛 ( 粤ICP备14069197号-2

GMT+8, 2017-11-25 19:16 , Processed in 0.098002 second(s), 16 queries , Gzip On, Memcache On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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