1.陣列被稱為符合型別,是因為它是基於其他型別來構建的,陣列中指定元素個數的值必須編譯時能確定的值,比如整形常數,const值,常量表示式
2.程式設計師必須保證陣列使用有效的下標值,因為編譯器不會去檢查下標是否有效
3.c++翻譯器不是真正的編譯器,它是將c++翻譯成c再用c編譯器進行編譯,它只是一種轉換器
4.int a[10] = 將所有的值都初始化為0,5.c-style string:以空字元'/0'結尾的字串int a[10] = 將a[0]初始化為1,其他為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被作業系統放在記憶體的固定區域形成程序表。程序表大小固定,這就是作業系統併發度,最多有多少個程序可以執行。掛起與啟用,掛起與阻塞 當作業系統負載調節時,先將一部分就緒的程序掛起,將其狀態資訊放到磁碟上,啟用時再拿回來。在調節,需...