野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 178383|回复: 836

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

  [复制链接]
发表于 2013-11-20 00:25:14 | 显示全部楼层 |阅读模式
本帖最后由 山外メ雲ジ 于 2013-11-20 00:31 编辑

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

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

  5. //可供选择的答案:
  6. //A.1
  7. //B.2
  8. //C.4
  9. //D.随机值
复制代码
国际惯例,答案回复可见。我们出题目的目的,是给大家一个思考的机会,不要题目都不去思考,直接看答案哦,那样学不了东西的。
大家回复的时候,把答案也写上去哦。

这题目的关键地方在于这句话:
  1. &a+1
复制代码
大家能不能区分下面这语句和上面那语句的区别:
  1. a+1
复制代码
两者之前的意思是完全不同的,大家看下面代码注释把
  1. int a[4]={1,2,3,4};  // a:数组首元素的首地址,即 a[0];    &a:数组的首地址  
  2. int *ptr=(int*)(&a+1); // a+1:数组的下一元素的首地址,即 a[1];
  3.                        // &a+1:下一数组的首地址,即(int)&a+4*sizeof(int) ,ptr 等效于  &a[4]
  4. printf("%d",*(ptr-1));//ptr-1 就  等效于   &a[3]  ,加上* 取内容,那么结果就是 4
复制代码



回复

使用道具 举报

发表于 2020-5-13 16:19:56 | 显示全部楼层
过来学习学习
回复 支持 反对

使用道具 举报

发表于 2020-5-13 15:55:39 | 显示全部楼层
没太看明白,int在8位单片机和32位单片机上应该表示不同的长度吧?
回复 支持 反对

使用道具 举报

发表于 2020-5-13 15:22:44 | 显示全部楼层
A吗?看看我想的对不对
回复 支持 反对

使用道具 举报

发表于 2020-5-13 11:57:51 | 显示全部楼层
逻辑上认为是4,即答案为C,
回复 支持 反对

使用道具 举报

发表于 2020-5-13 11:47:08 | 显示全部楼层
很明显答案是4,取最后一个元素值
回复 支持 反对

使用道具 举报

发表于 2020-3-10 21:26:49 | 显示全部楼层
选择A.1这个答案
回复 支持 反对

使用道具 举报

发表于 2020-2-22 20:07:11 | 显示全部楼层
A                                 
回复 支持 反对

使用道具 举报

发表于 2019-11-29 15:54:48 | 显示全部楼层
A。。。。。。。。
回复

使用道具 举报

发表于 2019-11-29 13:13:21 | 显示全部楼层
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
回复 支持 反对

使用道具 举报

发表于 2019-11-29 10:58:36 | 显示全部楼层
4444444444
回复 支持 反对

使用道具 举报

发表于 2019-11-17 16:57:51 | 显示全部楼层
1.。。。。。。。。。。。。。。。。。
回复

使用道具 举报

发表于 2019-11-8 16:08:29 | 显示全部楼层
看看答案                              
回复 支持 反对

使用道具 举报

发表于 2019-11-8 15:28:12 | 显示全部楼层

走过路过,不能错过
回复 支持 反对

使用道具 举报

发表于 2019-10-31 11:58:26 | 显示全部楼层
答案应该是4吧
回复 支持 反对

使用道具 举报

发表于 2019-10-25 09:55:50 | 显示全部楼层
A,ptr是指向a[1]的,然后*(ptr-1)就是a[0]的值,1
回复 支持 反对

使用道具 举报

发表于 2019-10-23 11:05:47 | 显示全部楼层
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
回复 支持 反对

使用道具 举报

发表于 2019-10-23 11:05:47 | 显示全部楼层
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
回复 支持 反对

使用道具 举报

发表于 2019-10-23 11:05:47 | 显示全部楼层
CCCCCCCCCCCCCCCCCCC
回复 支持 反对

使用道具 举报

发表于 2019-10-21 12:07:38 | 显示全部楼层
A吧,学习学习
回复 支持 反对

使用道具 举报

发表于 2019-10-20 14:00:40 | 显示全部楼层
A.1                        
回复 支持 反对

使用道具 举报

发表于 2019-8-29 15:32:04 | 显示全部楼层
ptr = &a + 1; *(ptr-1)= *a;
回复 支持 反对

使用道具 举报

发表于 2019-8-29 15:08:32 | 显示全部楼层
1,,,,,,,,......
回复

使用道具 举报

发表于 2019-8-21 08:17:22 | 显示全部楼层
我会选A 但是感觉不对 有坑。。。。
回复 支持 反对

使用道具 举报

发表于 2019-8-15 16:16:00 | 显示全部楼层
6666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2019-8-15 14:11:45 | 显示全部楼层
111111111111111
回复 支持 反对

使用道具 举报

发表于 2019-7-28 15:36:14 | 显示全部楼层
1                              
回复 支持 反对

使用道具 举报

发表于 2019-7-28 10:19:06 | 显示全部楼层
基础不牢固呀,学习了
回复 支持 反对

使用道具 举报

发表于 2019-6-10 19:59:19 | 显示全部楼层
答案是C,4
回复

使用道具 举报

发表于 2019-6-10 19:03:49 | 显示全部楼层
&a+1   a代表的数组的地址   不是首地址了   选C
回复 支持 反对

使用道具 举报

发表于 2019-5-8 09:30:26 | 显示全部楼层
我还是选了A
回复 支持 反对

使用道具 举报

发表于 2019-5-6 10:18:52 | 显示全部楼层
A....................
回复

使用道具 举报

发表于 2019-5-6 09:59:21 | 显示全部楼层
开始将 2 的地址赋值给了 p 减一应该输出1
回复 支持 反对

使用道具 举报

发表于 2019-4-15 15:11:24 | 显示全部楼层
答案是C,第五行(int*)(&a+1)把数组a强制转换成32位整型,a地址加一就应该是加4个字节,所以执行完第五行*p应该是a[5]的值,然后因为*p是指向8位字符类型,所以*(p-1)还是减1个字节。不知道对不对,以上都是我猜的。
回复 支持 反对

使用道具 举报

发表于 2019-4-12 18:18:44 | 显示全部楼层
cccccccccccccccccccccccccc
回复 支持 反对

使用道具 举报

发表于 2019-4-12 18:18:15 | 显示全部楼层
没看懂,ε=(′ο`*)))唉
回复 支持 反对

使用道具 举报

发表于 2019-4-12 17:55:35 来自手机 | 显示全部楼层
答案是什么
回复 支持 反对

使用道具 举报

发表于 2019-4-12 16:44:13 | 显示全部楼层
答案 : c....
回复

使用道具 举报

发表于 2019-4-9 10:45:58 | 显示全部楼层
看看分析是否我想的那样
回复 支持 反对

使用道具 举报

发表于 2019-3-29 09:13:50 | 显示全部楼层
D,&地址a,代表的是移动整个数组的长度,a,代表首元素首地址,a+1是移动一个元素的大小,故选D
回复 支持 反对

使用道具 举报

发表于 2019-3-28 19:21:02 | 显示全部楼层
取数组的地址加一的步进值是数据的长度,所以输出的应该是个不确定值吧
回复 支持 反对

使用道具 举报

发表于 2019-3-28 10:18:55 | 显示全部楼层
我选C,但有可能是D............
回复 支持 反对

使用道具 举报

发表于 2019-3-27 21:22:30 | 显示全部楼层
D
不知道是什么值,地址-1不等于数组前推
回复 支持 反对

使用道具 举报

发表于 2019-3-27 17:05:39 | 显示全部楼层
感觉答案应该是D
回复 支持 反对

使用道具 举报

发表于 2019-3-15 17:17:56 | 显示全部楼层
【每日一题讲解】数组名加减的问题
回复 支持 反对

使用道具 举报

发表于 2019-3-15 14:47:23 | 显示全部楼层
aaaaaaaaaaaaaaaa
回复 支持 反对

使用道具 举报

发表于 2019-3-15 13:53:10 | 显示全部楼层
看答案      
回复 支持 反对

使用道具 举报

发表于 2019-3-14 21:01:13 | 显示全部楼层
ans : 4  !!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2019-3-7 15:16:48 | 显示全部楼层
&a+1实际上指向的是数组a的最后一个元素4的后面一个位置,所以结果为
C.4
回复 支持 反对

使用道具 举报

发表于 2019-2-18 09:50:33 | 显示全部楼层
是不是1呀哎呀呀不知道
回复 支持 反对

使用道具 举报

发表于 2019-2-14 10:16:43 | 显示全部楼层
aaaaaaaaaawfdf
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 01:57 , Processed in 0.048679 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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