| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1284 人关注过本帖
标题:[求助]请教几道有关指针和算术表达式的简单题目.
取消只看楼主 加入收藏
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
 问题点数:0 回复次数:6 
[求助]请教几道有关指针和算术表达式的简单题目.
有这样一个语句:
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a
则值为3的表达式是
A:p+=2 ,*(p++)
B:p+=2,*p++
C:p+=2,*++p
D:p+=2,++*p
答案是A,我想问一下这四句话分别表示什么意思?我个人觉得只要p+=2就能表示3了,因为p=p+2表示地址向后移两位,为什么后面还要加上*(p++)?

有下面这样一个程序,它的显示结果是:
main()
{
char *d[]={"ab","cde"};
printf("%x",d[1]);
}
答案是:字符c的地址.我是这样理解这个答案的,指针数组是存放第一个元素地址的,d[0]表示"ab"中a的地址,那么d[1]就是"cde"中c的地址,这样理解对吗?还有,不管以十六进制还是其它形式输出都是c的地址对吗?和输出形式无关对吗?


有这么一段程序,它的输出结果是:
main()
{
i=5,j=9,x;
x=(i==j?i: (j=7));
printf("\n%d,%d",i, j);
}

答案是5,7,可我觉得应该是5,9.我是这样想的,x=(i==j?i: (j=7));这一步得出的结果是x=7,虽然x=7,但j和i的值都没有改变,所以输出的结果应该还是5,9.不知道我的思路对吗?

搜索更多相关主题的帖子: 算术 指针 表达 
2006-08-17 16:10
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用ridwsc在2006-8-17 16:16:37的发言:


j 后来在程序中被赋值过了,

通过前辈这么一说,这道题我完全懂了,谢谢!

2006-08-17 23:13
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用ar7043在2006-8-17 17:05:48的发言:
第一题p+=2把p的地址向后移了两位。又自加表达式不是变成4了吗
我也是这么想的,请问这种思路对吗?
2006-08-17 23:15
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
首先很感谢楼上高手解答,我还是有一点想不通,既然p+=2/*先使p指向a[2]=3
这样这个表达式的值已经是3了,那后面为什么要加*(p++),是不是多此一举了呢?请指教,谢谢!
2006-08-18 14:49
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 

那就是说题目出错了?

2006-08-18 15:07
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用soft_wind在2006-8-18 15:11:42的发言:
没,*p==3,表达式的结果是3,*p++等价于取*P的值,然后把p向后推移一个类型单位。所以表达式的值仍是3
您可以先看看书,看看a++和++a的区别以及运算符号的优先级.

*p++等价于取*P的值,然后把p向后推移一个类型,*p已经等于3了,再向后移一位不就变成4了吗?

2006-08-18 22:37
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
以下是引用cwande在2006-8-18 23:19:29的发言:
*p是变成了四,但之前的*(p++)的值是3,
注意求的是*(p++)的值,而不是之后*P的值
就比如i=2,i++;此时i++的值是2,但之后i才=3

我终于明白了,这么说*(++p)的值就是4了,因为
就比如i=2,++i;此时++i的值是3,但i的值还是3,不变,对吗?

2006-08-18 23:56
快速回复:[求助]请教几道有关指针和算术表达式的简单题目.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018973 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved