设有说明语句:int x[]={0,1,2,3,4,5,6,7,8,9}, *p=x+5; 则printf("%d",*p--);的输出结果为( )。
a、出错
b、x[4]的地址
c、4
d、5
...x[]={0,1,2,3,4,5,6,7,8,9}, *p=x+5; 则printf("%d",*p--);的输...
d,5就是对下标进行运算,--运算是在输出结束后进行的,*p=x+5就是给x的第一个下标之后加五,就是五了,比较容易错选c
若有定义语句:int x[5]={0, 1, 2, 3, 4}, *p;,则以下数值不为2的表达式...
p 就等于 x[2], 等于 2.C 的表达式是 (p=x+1, *(p++) ), 按后缀++规定,在表达式内 先用原值,出了表达式再自增1。所以 C 的表达式 可以写成: (p=x+1, *(p) ),p=x+1 就是 p=&x[1],(p) 就等于 x[1], 等于 1. 数值不为2的表达式 选 C ...
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5
题有问题样,如果p为指针变量,应该是p=a;那答案就是D
设有语句:int a[10]={0,1,2,3,4,5,6,7,8,9},i,*p=a;,
答案是D,D的正确形式应该为:*(a+i)前面多了个星号。A:a[0]B: a[i]C: p[i]
(2)有定义int arr[10 ]={0,1,2,3,4,5,6,7,8,9},*p,i=25;若执行语句: p...
答案不是固定值 是随机值 p=arr相当于p=&arr[0]p+i相当于p=&arr[0+i]即&arr[25](p+i)应当是arr[25]的值 实际上这个下标是无效的 所以系统会给出未定义的数值 是否i=2写错了?
若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句
答案:D 对于数组a[10],a就是该数组的首地址,定义指针p赋值为a,那么a和p的操作基本相同:a[5]=p[5]=*(a+5)=*(p+5),对于D选项,p[5]是个int值,再取*就不对了。
int i;int x[3] [3]={1,2,3,4,5,6,7,8,9}
二维数组在内存中是如下存储的,按行进行存储的 x[0][0] 9 x[0][1] 8 x[0][2] 7 x[1][0] 6 x[1][1] 5 4 x[2][0] 3 2 1 其实也可以看做一维数组的存储 x[0]---x[8] x[0]=9 x[1]=8 x[8]=1 因为存储的时候都是一样的 p指向...
...{ int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(""%x\\n...
这里是输出地址的16进制值 假如1个整数是2个字节,则p+9 比p多了2*9 =18,为16进制的12H,加上194H,就是1A6H,答案是D 如果1个整数占4个字节,则p+9 比p多了4*9 = 36,为16进制的24H,加上194H,得到1B8,题目中没有答案
...数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则语
选C i=0时 输出x[0][2]: 3 i=1时 输出x[1][1]: 5 i=2时 输出x[2][0]: 7 答案就是C 3 5 7
设int x[]={1,2,3,4,5,6},*p=x; 则值为3的表达式是 __.
p++相当于*(p++);相当于 p;p++;而开始时p+=2;所以*p=a[2]=3;再执行p++后 p指向a[3]