p指向数组第一个元素a[0].所以*p就是a[0],为1.a+2 就是指向a[2],所以*(a+2)就是a[2],为0.所以*p+(*(a+2)) 结果为1.
p= a+5 即 p 指向 a[5]= 11;第一次: j=3 执行 case 3:printf("%d",*(--p));--p, 即p 指向 a[4]= 9;第二次: j=2 执行case 2:printf("%d",*p++); break;因为++在右边,故执行完好值才改变,现在还是指向a[4]=9;输出后 p 指向 a[5]= 11 第三次:j=1,因为...
答案A.数组定义是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10 A. p += 2使p指向a[2], *(p++)表示先取*p的值, 然后p增加1(指向a[3]), 所以取得的值是a[2]=3 B. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然后取*p的值,所以是a[3]=4 C. p += 3使p...
先去指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2++p 先将指针p自增1(此时指向数组第二个元素),* 操作再取出该值++*p 先取指针p指向的值(数组第一个元素1),再将该值自增1(数组第一个元素变为2)include<stdio.h>int main(){int a[2]={1,...
include <stdio.h> void main(){ int a[]={8,2,9,4,1},*p;p=a;(p+2)+=2;printf("%d %d",*p,*(p+2));} 输出的结果是8 11这两个数。首先你要知道指针的含义,和数组中数组名的作用。第一:你定义了一个指针p,并且把a的值赋予给p,这就相当于把一维数组a[5]的首地址赋予...
不能使用中文标点。改正标点后,程序已经运行通过,运行答案是12。include<stdio.h> /*这里原来多了一个a*/ main(){int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;for (i=0;i<4;i++)p[i]=&a[i*3];printf("%d\n",p[3][2]);} p[3]是...
打印结果分别是:2, 1p=(int*)(&a+1)等价于*p=&a[1];注意p是指针,指向的地址,故要取a[1]的地址,前面加个取地址符&运行结果是:2,5include <stdio.h>int main(){int a[5]={1,2,3,4,5};int *p;p=(int *)(&a+1);printf("%d,%d\n",*(a+1),*(p-1));return 0;...
(p+2)就是先把P指向的地址后移两个单位,P初始化指向a数组首地址,后移两个单位后即 a[2]= 3 ;答案
选择 Bint a[][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};相当于int a[][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 0, 0}};而 int * p = *(a + 1);表明 p 此时指向 5 所以要想输出9, p 需要 += 4;剩下就是 * 和 ++ 优先级的...