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码。