一、學習動態內存分配、字符串操作、字符串函數的實現
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碼。