有以下程序 #include <stdio.h> #include <stdlib.h> void fun(int **s, int x[2][3]) { **s=*(x[1]+1); } main() { int a[2][3] = {1,2,3,

admin2020-10-26  24

问题 有以下程序
#include <stdio.h>
#include <stdlib.h>
void fun(int **s, int x[2][3])
{  **s=*(x[1]+1);  }
main()
{  int a[2][3] = {1,2,3,4,5,6}, *p;
   p = (int*)malloc(sizeof(int));
   fun(&p,a);
   printf("%d\n",*p);
}
程序的运行结果是

选项 A、5
B、2
C、6
D、3

答案A

解析 malloc(size)函数作用是在内存的动态存储区分配一个长度为size的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给p指针,然后取p指针的地址,调用fun函数。fun函数中对指向指针的指针s指向的内存单元赋值,其中x[1]表示二维数组x的第二行的行地址,x[1]+1表示二维数组x的第二行第二列的地址,所以fun函数的功能是将二维数组x的第二行第二列的值,即x[1][1]赋值给**s,*s为p,所以**s代表*p,x[1][1]与a[1][1]等价,因此答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/Tk3p777K
0

最新回复(0)