Hi Bomb! 2023-06-22 17:15 采纳率: 72.7%
浏览 16
已结题

计算机二级 有些题没看明白

8.有以下程序: D. 将字符串s接续到字符串t中

#include <stdlib. h>
#include <stelio. h>
main()  
{ char *p, *q;
p=(char*) malloc(sizeof(char)*20);q=p; 
scanf("%s%s",p,q);printf("%s%s\n",p,q);
}

若用键盘输入: abc def <回车>, 则输出结果是( )。
A. def def B. abc def C. abcd D. dd

正确答案 选A 不理解

  1. 若有以下定义和语句:
#include <stdio. h>
int a =4,b=3,*p, * q, *w;
p=&a;q= &b;w=q;q =NULL;

则以下选项中错误的语句是( )。
A. * q=0; B. w=p; C. * p=a; D.p= w;
正确答案 选 A 不理解 解析是因为 q =NUll *q=0 就错了

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2023-06-22 17:20
    关注

    第一个 选 A 因为 p 和 q 指向同一个分配的内存空间,第一次输入p和q指向的内存空间 被赋值 abc,第二次输入又被赋值 def,最终输出 defdef
    第二个选A 因为 q 指向了 b, q存储的是 b的地址, 而 q 又被赋值 NULL,也就是 q 指向了未知的区域, *q的访问就是非法的,所以它是错误的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月2日
  • 已采纳回答 6月24日
  • 创建了问题 6月22日