选择题   有以下程序:
    #include  <stdio.h>
    #include  <string.h>
    #include  <stdlib.h>
    main()
    {  char *p1,*p2;
    p1=p2=(char*) malloc(sizeof(char)*10);
    strcpy(p1,'malloc');
    strcpy(p2,p1+1);
    printf('%c%c\n',p1[0],p2[0]);
    }
    程序的运行结果是______。
 
【正确答案】 A
【答案解析】malloC函数的原型为:malloc(size),其作用是在内存的动态存储区分配一个长度为size的连续空间。程序执行过程为:定义两个字符类型指针p1和p2,动态开辟10个字符类型的内存单元,并且使指针p1与p2均指向这10个内存单元的第一个单元。调用strcpy函数,将字符串“malloc”赋值给这10个内存单元的前7个单元,存储情况为:malloc\0,此时p1指向这10个内存单元的第一个单元。再次调用strcpy函数,这10个内存单元的第2个单元到第7个单元元素重新赋值给p2指向的内存单元,存储情况为:alloc\0\0,此时p1和p2均指向10个内存单元的第一个单元。输出两个指针指向单元的数据值,结果为:aa,选项A正确。