为什么最后输出的内容等价于p[1]、p[3]、p[4],即tab。
.李文浩 正式会员 2016-09-22 14:43:56
489 1 0
问题来自: malloc函数
以下程序的输出结果是__【14】__ 。
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
main() 
{ char *p,*q,*r; 
  p=q=r=(char*)malloc(sizeof(char)*20); 
  strcpy(p,"attaboy,welcome!"); 
  printf("%c%c%c\n",p[1],q[3],r[4]); 
  free(p); 
}
A. tab
B. att
C. tec
D. tc!
答案:A
解析:p、q、r共同只想了一个大小为20的字符数组空间。由于3者都指向同一个空间,因此最后输出的内容等价于p[1]、p[3]、p[4],即tab。

共 1 个回答

    最佳答案

    qqq 资深元老 助教 3218天前

    指针p、q、r指向的是同一个内存空间,strcpy将"attaboy,welcome!"字符串赋值给p所指空间,也就是p、q和r共同指向的那个内存空间值为"attaboy,welcome!",那p[1]就是't',q[3]=p[3]=r[3]='a',r[4]=p[4]=q[4]='b',所以答案是tab

您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享

代码语言