有以下程序 #include #include #include main() { char *p1,*p2; p1=p2=(char *)malloc(sizeof(char)*10); strcpy(p1,"malloc"); strcpy(p2

admin2015-07-28  12

问题 有以下程序
#include
#include
#include
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、aa
B、ma
C、am
D、mm

答案A

解析 语句"p1=p2=(char *)malloc(sizeof(char)*10);strcpy(p1, "malloc");"将指针p1和p2指向同一块新分配的内存并存入字符串"malloc",所以p1与p2永远相等,语句"strcpy(p2,p1+1);"即将字符串第2个字符往后的字符串赋值给该p2指向的地址,执行结束后该内存块内的数据为"alloc",所以答案选A。
转载请注明原文地址:https://jikaoti.com/ti/TMn0FFFM
0

最新回复(0)