• 2020.3.15 第三次作业


    一、学习笔记

    学习范围:8.2.2  动态内存分配,8.3.1  单字符输入输出,8.3.2  字符串数组,8.4.1  函数strlen,8.4.2  函数strcmp,8.4.3  函数strcpy,8.4.4  字符串中找字符

     

    二、相关程序

    三、存在问题

    1.什么是行编辑?

    答:一行行接受用户从终端输入的程序或数据,并存入用户的数据区

    2.什么是‘shell’?

    答:shell就是在操作系统和应用程序之间的一个命令翻译工具。

    3.什么是缓冲区?

    答:缓冲区又称为缓存,是内存空间的预留部分,主要用来缓冲输入或输出的数据,根据其对应的是输入还是输出设备,分为输入缓冲区和输出缓冲区。

    4.下面描述正确的是 ( D )

    解析:字符串按照顺序依次比较,如果碰到不相等的,则进行相减,得出结果,反之则得0。

    5.假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是( D

    此题正确选项是D,但是A和B在编译器中运行时确实能够打印出ABCDE,那么A和B为何不正确那?

    答:A和B中字符的定义都是字符数组的形式,并不是字符串,即末尾都没有‘’, 非字符串使用字符串函数puts来输出是不正确的。
        但是为何A和B这两种情况反倒能输出正确结果那,这就涉及到存储中的边界对齐存储的知识了:

        一个字节是8个字符,如果字符数组长度是小于8个,比如例题中的5个,那么因为边界对齐存储原因,该字节中只存放5个字符,剩下的3个字符都为0,使用puts函数输出字符数组时,就会把后面的0识别为‘’。而当数组长度是8或者8的倍数时,puts函数找不到后面的0,打印就会出现问题。
        如果我们将数组改为8个元素,那么后面的就需要读取下一个字节中的数据了,对于长度为8个元素或者8的倍数的字符数组使用puts函数,结果就不正确了。

  • 相关阅读:
    克如斯卡尔 P1546
    真正的spfa
    第四课 最小生成树 要点
    关于vscode中nullptr未定义
    cmake学习笔记
    python学习笔记
    (BFS 图的遍历) 2906. kotori和迷宫
    (图论基础题) leetcode 997. Find the Town Judge
    (BFS DFS 并查集) leetcode 547. Friend Circles
    (BFS DFS 图的遍历) leetcode 841. Keys and Rooms
  • 原文地址:https://www.cnblogs.com/qipaopao001120/p/12501414.html
Copyright © 2020-2023  润新知