C 系統總結(一)

2021-05-25 11:16:22 字數 1702 閱讀 4117

1.陣列被稱為符合型別,是因為它是基於其他型別來構建的,陣列中指定元素個數的值必須編譯時能確定的值,比如整形常數,const值,常量表示式

2.程式設計師必須保證陣列使用有效的下標值,因為編譯器不會去檢查下標是否有效

3.c++翻譯器不是真正的編譯器,它是將c++翻譯成c再用c編譯器進行編譯,它只是一種轉換器
4.int a[10] = 將所有的值都初始化為0,

int a[10] = 將a[0]初始化為1,其他為0

5.c-style string:以空字元'/0'結尾的字串

char[10] = "i love you".

此處字串常量(字串字面值)隱式的包含空字元,不必手動新增,所以"s"包含兩個字元,而"s"實際表示的是這個字串常量的位址,所以char a = "s"錯得離譜

6.sizeof操作符計算整個陣列的長度,將'/0'也包含在內,而strlen()函式不包含'/0',也就是說它只計算可見字元

7.cin使用空白符來定界

char a[10];

cin >> a;

則當鍵入abc de時,陣列a中實際儲存的是"abc","de"留在輸入緩衝區中,這種特性可能迫使我們可能需要使用getline(),即面向行的輸入

char a[10]

cin >> cin.getline(a,10),它通過換行符來確定行尾且不儲存換行符,也就是說,它用空字元來替換換行符

char a[10]

cin.get(a,10)也是面向行當輸入,但是它不丟棄換行符,而是將其留在輸入佇列中,所以我們可能需要cin.get()來讀取換行符,這個呼叫時功能是讀取下乙個字元。我們可以這樣寫cin.get(a,10).get()

8.當輸入的字元比分配的長度更長,則餘下的字元會留在輸入佇列中

getline使得操作更加簡便,get使得檢查錯誤更加容易

9.混合輸入字串和數字可能會出現問題,比如下列程式片段

int a;

char b[10];

cin >> a;

正確的寫法應該是

int a;

char b[10];

cin >> a;

cin.get();

cin.getline(b,10)

cin.getline(b,10)會將輸入a時留在輸入佇列中的換行符經過替換成空字元後輸入到b中

10.string提供了將字串作為一種資料型別的表示方法,string類包含在命名空間std中;

char陣列是一組用來儲存字串的儲存單元,string類變數是乙個表示字串的實體;

不能將c庫中的c字串函式用於string物件;

當需要讀取一行而不是乙個單詞時,需要做如下處理:

getline(cin,str),這裡的getline不是istream類中的乙個方法,istream類中沒有處理string的方法

所以需要特別注意下列程式片段的注釋的區別

int a;

string b;

cin >> a;    //這裡使用的是istream類中的乙個方法

cin >> b;    //這裡使用的是string類的乙個友員函式

12.有些編譯器(如vc,bc)不支援將string類作為結構成員

13.在結構體中使用位欄位,可以建立與某個硬體裝置上的暫存器對應的資料結構。位欄位一般用在低階程式設計中

C 乙個IM系統簡單總結

專案背景 這些功能是基於群會話,比如工廠操作工人遇到問題,請求遠端專家,這個初級專家不能解決問題,會邀請乙個高階專家進來解決。vb.net教程 c 教程 為了用c 解決這個問題真是費勁心思,如果是其他語言也許不會這麼折騰,簡單記錄一下。1 網上查詢資料找到乙個ggtalk 這個怎麼評價呢,僅僅是做一...

C 案例總結 機房預約系統(一)

學校有一些規模不同的機房,製作機房預約系統 1 身份簡介 分別有三種身份使用該程式,三種身份有各自的功能 學生 申請預約機房 檢視自身的預約 檢視所有的預約 取消自身的預約 登出登入 學生的屬性 學號 姓名 登入密碼。教師 檢視所有預約 審核預約 審核通過或不通過 登出登入 教師的屬性 職工編號 姓...

作業系統總結一

pcb是作業系統感知程序存在的唯一標誌。程序與pcb一一對應,所有pcb被作業系統放在記憶體的固定區域形成程序表。程序表大小固定,這就是作業系統併發度,最多有多少個程序可以執行。掛起與啟用,掛起與阻塞 當作業系統負載調節時,先將一部分就緒的程序掛起,將其狀態資訊放到磁碟上,啟用時再拿回來。在調節,需...