有以下程序 #include <stdio.h> #include <stdlib.h> void fun(int *p1, int *s) { int *t; t=(int *)malloc(2 * siz

admin2020-04-18  22

问题 有以下程序
    #include <stdio.h>
    #include <stdlib.h>
    void fun(int *p1, int *s)
    {  int *t;
       t=(int *)malloc(2 * sizeof(int));
       *t=*p1 + *p1++;
       *(t+1)=*p1+ *p1;
       s=t;
    }
    main()
    {
       int a[2]={1,2},b[2]={0};
       fun(a,b);
       printf("%d,%d\n",b[0],b[1]);
    }
程序运行后的输出结果是

选项 A、2,6
B、0,0
C、2,4
D、1,2

答案B

解析 malloc函数的原型为:malloc(size);,函数的作用是在内存的动态存储区分配一个长度为size的连续空间。程序执行过程为:定义数组a={1,2},b={0,0},b,调用函数fun,将数组地址传入函数,指针p1指向a,s指向b,定义指针t并使其指向开辟的两个整型内存,为第一个内存赋值为数组a第一个元素的2倍,即2,然后指针p1指向a数组第二个元素,为第二个内存赋值为数组a第二个元素的2倍,即4,最后使指针s指向动态开辟的两个内存的首地址。整个过程中数组b没有发生变化,依次输出b中元素为0,0,B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/a3Cp777K
0

最新回复(0)