选择题
有以下程序:
#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正确。