选择题   有以下程序:
    #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]);
    }
    程序运行后的输出结果是______。
 
【正确答案】 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选项正确。