早教吧作业答案频道 -->其他-->
指针问题设intx[]={1,2,3,4,5,6},*p=x;则数值为3的表达式是(B)。(A)p+=2,*++p(B)p+=2,*p++(C)p+=3,*p(D)p+=2,++*p*p++这个等于数值3不懂~求解释。。
题目详情
指针问题
设int x[ ]={1,2,3,4,5,6},*p=x;则数值为3的表达式是( B )。
(A) p+=2, *++p (B) p+=2, *p++
(C) p+=3, *p (D) p+=2, ++*p
*p++ 这个等于数值3不懂~求解释。。
设int x[ ]={1,2,3,4,5,6},*p=x;则数值为3的表达式是( B )。
(A) p+=2, *++p (B) p+=2, *p++
(C) p+=3, *p (D) p+=2, ++*p
*p++ 这个等于数值3不懂~求解释。。
▼优质解答
答案和解析
这其实考察了++的前置和后置的区别。
*p=x;将数组x的首地址赋值给p,即x[0]的地址,这样p就指向了数组。当执行完p+=2时,即指针偏移了2*4个字节,指向了x[2]元素,即值为3的地址,因此此时*p就为3了。
当++后置时,即*p++时,是先执行*p,输出指针p指向的地址中的值,即3,再++,此时指针p指向x[3]的地址;
当++前置时,即*++p时,因为自增运算符++的优先级高于取值运算符*的优先级,所以先执行++,即p存放x[3]的地址,指向x[3],再执行*p,则输出4。
要输出3,则应该为++后置,要输出4则应该为++前置。并且前提是p+=2,因此选择B。
记住++在变量位置的不同将导致不同的操作,一句话:++在变量前(即前置)则先执行++再取值运算;++在变量后(即后置)则先取值运算再执行++。
希望你能明白,希望对你有帮助,有啥疑问咱们再讨论,呵呵!
*p=x;将数组x的首地址赋值给p,即x[0]的地址,这样p就指向了数组。当执行完p+=2时,即指针偏移了2*4个字节,指向了x[2]元素,即值为3的地址,因此此时*p就为3了。
当++后置时,即*p++时,是先执行*p,输出指针p指向的地址中的值,即3,再++,此时指针p指向x[3]的地址;
当++前置时,即*++p时,因为自增运算符++的优先级高于取值运算符*的优先级,所以先执行++,即p存放x[3]的地址,指向x[3],再执行*p,则输出4。
要输出3,则应该为++后置,要输出4则应该为++前置。并且前提是p+=2,因此选择B。
记住++在变量位置的不同将导致不同的操作,一句话:++在变量前(即前置)则先执行++再取值运算;++在变量后(即后置)则先取值运算再执行++。
希望你能明白,希望对你有帮助,有啥疑问咱们再讨论,呵呵!
看了 指针问题设intx[]={1...的网友还看了以下:
已知总体X的分布为P{X=i}=14,i=0,1,2,3,抽取n=100的简单随机样本X1,X2, 2020-05-14 …
设随机变量ξ的分布列为P(ξ=i)=a(12)i,i=1,2,3的a的值为8787. 2020-05-15 …
随机变量X和Y相互独立,X的概率分布列为P{X=i}=1/3(i=-1,0,1),Y服从(0,1) 2020-05-17 …
三相功率P=根号3*U*I*COSφ=660*U*I*COSφ,单相p=U*I*COSφ=220* 2020-07-19 …
关于i++++i的问题inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=( 2020-07-25 …
设随机变量X与Y相互独立,X的概率分布为P{X=i}=13(i=-1,0,1),Y的概率密度为fY 2020-07-25 …
设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为().A.P+i*2 2020-08-03 …
i为int型变量,且初值是3,有表达式i=(a=5,b=10)+(i+=b,b+=a),表达式的值是 2020-11-01 …
在资金时间价值计算时,i和n给定,下列等式中正确的有().A.(F/A,i,n)=[(P/F,i,n 2021-01-14 …
1、在资金时间价值计算时,i和n给定,下列等式中正确的有?为什么?1、A(F/A,i,n)=[(P/ 2021-01-14 …