main(){ int a[]={1,2,3,4,5,6};int *p;p=a;printf("%d ",*p);printf("%d ",*(++p));printf("%d ",*++p);printf("%d ",*(p--));p+=3;printf("%d %d ",*p,*(a+3));} A) 1 2 3 3 5 4 B) 1 2 3 4 5 6 C) 1 2 2 3 4 5 D) 1 2 3 4 4 5为何选A?这些输出每一个是什麽意思,希望有大神详细解答
main(){ int a[]={1,2,3,4,5,6};int *p;p=a; //p指向的数组aprintf("%d ",*p); //*p指的是数组a的首地址的数据就是数组的第一个元素,是1printf("%d ",*(++p));//*(++p)是先自加再用,p指向第一个元素,自加1后就是指向第二个元素,是2printf("%d ",*++p); //因为p已经指向的第二个元素,再自加1就是第三个元素,是3printf("%d ",*(p--));//p--是先用再自减,所以输出是3,然后p自身再做自减1,p+=3; //上一步p自减一后指向第二个元素,再后移3个元素就是5printf("%d %d ",*p,*(a+3));/*(a+3)就是a[3]就是第4个元素就是4}
main(){ int a[]={1,2,3,4,5,6};int *p;p=a;printf("%d ",*p); //数组a第一个元素是什么,是:1printf("%d ",*(++p));//第2个元素是什么,是:2printf("%d ",*++p); //第2个元素自增1是什么,是:3printf("%d ",*(p--));//还是问第2个元素是几,但是上一个表达式后,第2个元素就成了:3p+=3; //向后移动3个位置printf("%d %d ",*p,*(a+3));//输出第5个元素是几:5 输出相对首地址偏移3个位置的元素:4 即a[3]}