天天看點

《c++ primer plus》讀書筆記:2.開始學習c++

一、筆記

1.阻止程式在調試時一閃而過:cin.get()。

2.c語言中,省略傳回值相當于說函數傳回值為int;而c++淘汰了這種用法。

3.main函數中末尾如果沒有傳回語句,則認為是return 0;其他函數不适用。(ANSI/ISO c++标準)

4.int main(viod) :關鍵字void說明不接受任何參數,這個void可省略。

5.比using namespace std;(引入std内所有名稱,偷懶,在大型項目中可能存在問題)更好的辦法是using namespace std::cout;(用到哪個名稱引入哪個名稱)。

6.cout是一個對象,它的屬性包括一個插入運算符<<,能将右側的資訊插入到流中。

7.endl和'\n'的差別:endl確定程式繼續運作前重新整理輸出(即立即顯示在螢幕上);'\n'不能保證,是以可能在有些系統中需要在你輸入資訊後才會顯示提示(未在适當時間顯示)。

8.c中所有變量的聲名都位于函數或者過程的開頭,但c++中沒有這種限制。 

9.cout<< vari; 在列印之前,cout必須将整數形式的數字轉換成字元串形式,且聰明的知道vari是一個需要轉換的整數。而printf(“%d”,vari)提供的是更細緻的控制功能。注:c++要使用printf等c輸出函數需要頭檔案<stdio.h>。

10.頭檔案命名約定

c++舊式風格:math.h

c++新式風格:math

c舊式風格:math.h

c新式風格:cmath

11.名稱空間支援是一項c++特性。

12.a=b=v=c=12;指派從右向左進行。

13.函數原型之于函數相當于變量聲名之于變量。

二、複習題(歡迎指正)

1.C++程式的子產品叫什麼?

【答】函數

2.下面的預處理器編譯指令是做什麼用的:#include <iostream>

【答】将iostream檔案中的内容添加到目标程式中,在編譯時,iostream檔案中的内容會替換掉#include <iostream>。

3.下面的語句是做什麼用的:using namespace std;

【答】将名稱空間std中的内容引入到源程式中。

4.什麼語句可以用來列印短語“hello world”然後開始新的一行?

【答】std::cout<<"hello world"<<std::endl;

5.什麼語句可以用來建立名為 cheeses的整型變量?

【答】int cheeses;

6.什麼語句可以用來将32賦給cheeses?

【答】cheeses = 32;

7.什麼語句可以用來将鍵盤輸入的值賦給變量cheeses?

【答】cin>>cheeses;

8.什麼語句可以用來列印“We have X varities of cheese”,其中X為變量cheeses的目前值。

【答】cout<<"We have "<<X<<" varities of cheese"<<endl;

9.下面的函數原型支出了關于函數的哪些資訊?

int froop(double t);

【答】函數名:froop;函數傳回值:int;函數傳入參數類型及個數:double,1個。

void rattle(int n);

【答】函數名:rettle;函數傳回值:void;函數傳入參數類型及個數:int,1個。

int prune(void);

【答】 函數名:prune;函數傳回值:int;函數傳入參數類型及個數:void,0個。

10.定義函數時,什麼情況下不必使用關鍵字return?

【答】暫時想到兩種情況:

(1)傳回值是void,可以不帶return,也可以return;(不帶參數)。

(2)main函數中,可以省略return 0;

11.cout<<"hello world";

上述代碼編譯時,編譯器指出cout是一個未知辨別符,導緻這種情況的可能原因是什麼,請給出三種修複這種問題的方法。

【答】原因:未引入命名空間std。

解決:

(1)使用前引入std全部名稱: using namespace std;

(2)使用前引入std中要使用的名稱:using namespace std::cout;

(3)使用時加上命名空間:std::cout<<"hello world";

三、程式設計練習(略)