设char s[10];int i=5;,下列表达式中,正确的表达式是( ).(1分)
问题描述:
设char s[10];int i=5;,下列表达式中,正确的表达式是( ).(1分)
A、s[i+6] B、*(s+i)
C、*(&s+i) D、*((s++)+i
答
A、s[i+6]//错误.数组超界.
B、*(s+i)//正确.
C、*(&s+i) //错误.&s+i这个地址超界,非法访问.
D、*((s++)+i //错误.s++试图改变s的值,而数组名的值不能改变.括号也不配对.C选项怎么超界了啊,&s代表的是多少啊?&s的类型是(*)[10],&s+5的值相当于s+50,即s[50],不越界才怪呢!