ldcf.net
当前位置:首页 >> mAin() {int A[10]={1,2,3,4,5,6,7,8,9,0},*p; p=A... >>

mAin() {int A[10]={1,2,3,4,5,6,7,8,9,0},*p; p=A...

我运行出来结果是10 环境是VS2008 int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%d",*p+9);

main( ) { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p-2; //*p=&a[3]把a中的3索引号地址给指针p,3索引号处为4,因为索引是从0算起 //*q=p-2把p的地址减2个int位,即1处的索引号地址给指针q,1处的索引号处的值为2 printf("%d\n",*p+*q); ...

答案是D p[ i ]是数组a[ ]的第i+1个元素,&p[ i ] 即取数组a[ ] 的第i + 1个元素的地址,故&p[ i ]表示数组元素地址。 A 错,a+1本身就是数组第二个元素的地址,再取地址编译报错 B 错,a是数组名,存储在静态区,不能进行自增++运算,只有变量...

答案:D。 解释:先要明白这两个printf输出的是地址,再是第一个printf输出的194是一个十六进制的数表示十进制的404,然后要知道p+9表示p指针后的第9个位置的地址,前面有说明了int占2个字节,故只要在404的基础上加18即422,然后再转换成十六进...

printf("%x\n",p); //p指向a[0],其值为地址值,这个值由操作系统管理,人不能确定。 printf("%x\n",p+9); //p+9的值应该比p的值大36,因为,在32编译系统中,整型占四个字个。第9个整型元素应该在第0个元素后面4*9=36字节。

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[2];p+=5;这里应该是p+=5,否则没有正确答案。 p初始指向a[2] 自加5之后 指向a[2+5]=a[7]=8 所以*p值为8.

结果是两个地址值(以十六进制显示出来),其中第一个是a[0]的地址,因为*p=a[0], p=&a[0], 即指针p指向的是数组a的首地址(即a[0]的地址)。望采纳

#include void insert(int *p,int i) { int j; for(j=10;j>i;j--) { *(p+j)=*(p+j-1);//从数组最后一个元素开始遍历,把遍历到的元素的前一个元素覆盖这个元素 } *(p+j)=100; for(j=0;j

6 void sum(int* a) { *a = *(a-1) + * (a+1); } 这样应该可以看懂的吧 , 数组作参数的时候,退化成指针

答案:D 对于数组a[10],a就是该数组的首地址,定义指针p赋值为a,那么a和p的操作基本相同: a[5]=p[5]=*(a+5)=*(p+5),对于D选项,p[5]是个int值,再取*就不对了。

网站首页 | 网站地图
All rights reserved Powered by www.ldcf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com