问题 单项选择题

以下程序输出正确的是______。
amovep(int *p,int(*a)[3],int n)
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++) *p=a[i][j];p++;

main()
int *p,a[3][3]=1,3,5,2,4,6;
p=(int*)malloc(100);
amovep(p,a,3);
printf("%d%d\n",p[2],p[5]);free(p);

A) 56
B) 25
C) 34
D) 程序错误

答案

参考答案:A

解析:[评析] 本题main函数中定义了指针P和二维数组a,通过函数amovep将数组的值存入指针P所指向的存储单元中,a的各元素分别为:a[0]=1,a[o][1]=3,a[0][2]=5,……,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)讽用函数amovcp,使得实参P与形参P,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

单项选择题
单项选择题 A1/A2型题