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

admin2010-09-05  45

问题 以下程序输出正确的是______。        amovep(int *pint(*a) [3]int n)        { int i,j;          for(i=0;i<n;i++)          for(j=0;j<n;j++){ *p=a[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][0]=1,a[0][1]=3,a[0][2]=5……,a[2][0],a[2][1]=0,a[2][2]=0。通过mallo()函数绐指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同—存储空间。最后输出p[2],p[5]为56。
转载请注明原文地址:https://kaotiyun.com/show/guWp777K
0

最新回复(0)