有以下程序 #include <stdio.h> #include <string.h> #include <stdlib.h> main() { char *p1,*p2;

admin2019-07-25  4

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

答案A

解析 malloc函数的原型为:malloc(size);,函数的作用是在内存的动态存储区分配一个长度为size的连续空间。程序执行过程为:定义两个字符类型指针p1和p2,动态开辟10个字符类型的内存单元,并且使指针p1与p2均指向这10个内存单元的第一个单元。调用strcpy函数,将字符串"malloc"赋值给这10个内存单元的前7个单元,存储情况为:malloc\0,此时p1指向10个内存单元的第一个单元。再次调用strcpy函数,这10个内存单元的第2个单元到第7个单元元素重新赋值给p2指向的内存单元以及以后的5个单元,存储情况为:alloc\0\0,此时p1和p2均指向10个内存单元的第一个单元。输出两个指针指向单元的数据值,结果为:aa,A选项正确。
转载请注明原文地址:https://www.kaotiyun.com/show/CpID777K
0

最新回复(0)