[求助]请教几道有关指针和算术表达式的简单题目.
有这样一个语句: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.不知道我的思路对吗?