C语言第三次作业

一、学习动态内存分配、字符串操作、字符串函数的实现

 1.1 观看1.2.2,1.3.1,1.3.2,1.4视频

 1.2 观看视频记录纸质的笔记  

 

 

 

 1.3 观看视频时所敲打的代码文件

 

 

展示内存

 

 

 

1.4 学习中存在的问题

(1)指针p被free之后变成了什么值,还有值吗?

   答:地址是不可能被删掉的,free只是告诉系统,这块内存不需要了,系统可以拿来做别

          的事,这块内存被释放之后暂时还没有其他程序访问这块内存,所以之前的数据还在,

          读也能读出来。

(2)Ctrl+Z和Ctrl+D结束运行那里不太懂。

  答:通过查询Ctrl+Z是把当前的程序挂起,暂停执行这个程序。Ctrl-D表示一个特殊的二进制值,

         表示EOF,作用相当于在终端中输入exit后回车。键盘输入字符,通过shell传给电脑内部做

         运算,敲下回车后程序仍未结束,当输入 Ctrl + Z 或 Ctrl + D时相当于文件结束符(EOF),

         shell拦截并做对应处理。

(3)程序参数int main(int argc, char * argv[])?

   答:百度查询。  argc: 代表启动程序时,命令行参数的个数,且argc的值至少是1。

          argv[]:指针数组,其中的每个元素都是一个char* 类型的指针,该指针指向一个字符串,

          这个字符串里就存放着命令行参数。

 

二、pta作业问题

1、单选题

2-1

以下不正确的赋值或赋初值的方式是( )。 (2分)

正确答案:应选C。    给string类型赋值字符串,默认字符串结尾有'\0赋值时可写 入。

C:str是一个数组,写入程序也是该数组首地址,str是一个指针常量,不能被赋值。

2-2

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

解释:A和B中字符的定义都是字符数组的形式,并不是字符串,puts函数输出字符串专用,遇

          到‘\0’停止输出,找不到就一直输出。C选项没有对指针s赋值,却对s指向的单元赋值,

          针的值是不确定的。

2-3

下面描述正确的是 (2分)

 

为什么字符串“That”小于字符串“The”?

答:因为比较是按顺序的,第一个都是T,第二个都是h,第三个a<e,所以“That”<“The”,

       比较方法就是挨个比较,利用ASC码。

 

posted @ 2020-03-15 22:54  姚如意  阅读(1004)  评论(2编辑  收藏  举报