編寫簡單的c++程式,包含乙個主函式main
**如下(示例):
int
main()
函式包括:返回型別、函式名、形參列表、函式體
本例中,()中為空的,所以形參沒有
1.2初始輸入輸出
輸入輸出:iostream庫
cin 標準輸入;cout 標準輸出
cerr 輸出警告和錯誤資訊;clog 輸出程式執行一般性檔案
1.3注釋簡介
//注釋掉整行
/* */注釋掉這中間
注釋界定符不能巢狀
1.4控制流
while for if
1.5類簡介
第一章只是講解了怎麼使用乙個類,在後續章節中再學習更詳細的定義與使用
2.1基本內建型別
算術型別
**:c++的算術型別
有符號數和無符號數
2.1.2型別轉換
主要會用到的還是bool型的和非bool型的轉換
對於無符號數和有符號數切記不要混用
當我們賦值給無符號數乙個大於它範圍的值時,結果是初始值對無符號型別表示數值總數取模後的餘數。
2.1.3字面值常量
『a』//字元字面值
「hello world!」//字串字面值,每個字串結尾新增乙個空字元』\0』
轉義序列
指定字面值的型別
表2.2指定字面值型別,可以通過加字首或者字尾改變型別
2.2變數
int sum=0,value;
在物件建立時獲得了乙個特定的值,這個物件就是被初始化了。
int units_sold=0;
int units_sold=
;int units_sold
;int
units_sold(0
);
用花括號初始化的形式被稱為列表初始化
預設初始化
定義變數時沒有指定初值
內建型別的變數未被顯式初始化,它的值由定義的位置決定。
定義於函式體之外的被初始化為0,定義於函式體之內的不被初始化,以其他形式訪問或者拷貝就會報錯
2.2.2變數的宣告和定義
宣告使得名字為程式所知,乙個檔案使用再別處定義的名字就必須包含對那個名字的宣告
extern int i;宣告而非定義i;
int j;宣告並定義j;
extern double pi=3.14//顯式初始化了,這個地方就變成了定義,在函式體內部初始化extern宣告的變數都會報錯
變數只能被定義一次,但可以多次宣告
2.2.3識別符號
定義與所實現功能盡量相關的名字
2.2.4名字的作用域
全域性作用域、塊作用域
巢狀的作用域:內層作用域、外層作用域
2.3復合型別
引用和指標
引用:給乙個物件起乙個新的名字
int ival=1024;
int &refval=ival;//refval和ival都=1024
指標:指向另一種型別
int *ip1;ip1是指向int型物件的指標
int *p=&ival;p存放ival的位址
double
*pd=
&dval;
double
*pd2=pd;
利用指標訪問物件
int ival=42;
int *p=&ival;
cout<<*p;//輸出為42
空指標
int
*p1=
nullptr
;//等價於 int *p1=0;
int*p2=
0』;int
*p3=
null
;
建議:要初始化所有指標
void* 指標
可存放任意物件的位址
2.3.3理解復合型別的宣告
int i=1024,p=&i,&r=i;//i是乙個int型的數,p是乙個int型的指標,r是乙個int型的引用。
int p1,p2;//p1是乙個int型的指標,p2是乙個int型的數
指向指標的指標,指向指標的引用,用到再記憶把
2.4const限定符
必須要初始化
const的引用
const int ci=
1024
;const
int&r1=ci;
//引用及其對應的物件都是常量
2.5處理型別
型別別名
typedef
double wages;
//wages是double的同義詞
using si=sales_item;
//si是sales_item的同義詞
指向某個型別別名指代的是符合型別或者常量
typedef
char
*pstring;
const pstring cstr=0;
//cstr是指向char的常量指標
注:不能把pstring替換成原來的樣子來理解
const char *cstr=0;//是對const pstring cstr 的錯誤理解
前者宣告了乙個指向char的常量指標,改寫後宣告了乙個指向const char的指標
(前者指標是常量,後者字串是常量)
auto 型別說明符
auto item=val1+val2;
//item初始化為兩者相加的結果
auto sz=
0,pi=
3.14
;//錯誤:sz和pi的型別不一致
decltype型別指示符
decltype(f()) sum=x;//sum的型別就是函式f的返回型別
2.6自定義資料結構
使用的是結構體struct
編寫自己的標頭檔案,一般是將那些只能被定義一次的實體。
預處理器
#define指令把乙個名字設定為預處理變數
#ifdef當且僅當變數已定義時為真
#ifndef當且僅當變數未定義時為真
檢測結果為真時後續操作執行到#endif
1.20
#include
#include
"sales_item.h"
intmain()
1.21
#include
#include
"sales_item.h"
intmain()
1.22
#include
#include
"sales_item.h"
intmain()
std::cout << book1 << std::endl;
return0;
}
1.23
#include
#include
"sales_item.h"
intmain()
std::cout << book1.
isbn()
<<
"共有"
<< a <<
"條銷售記錄"
<< std::endl;}}
return0;
}
C Primer 一 二章學習筆記
一,cin.get 目的 防止有些程式,輸出結果後關閉視窗。二,c 新式風格 標頭檔案 c 專有的 iostream c專有的 cmath 就是省略了 h 三,名空間 作用 使在c 標準類庫中定義的名字在本程式中可以使用 用法 using namspace std 解釋 c 標準程式庫中的所有識別符...
C Primer 一 二章學習筆記
一,cin.get 目的 防止有些程式,輸出結果後關閉視窗。二,c 新式風格 標頭檔案 c 專有的 iostream c專有的 cmath 就是省略了 h 三,名空間 作用 使在c 標準類庫中定義的名字在本程式中可以使用 用法 using namspace std 解釋 c 標準程式庫中的所有識別符...
C Primer 一 二章學習筆記
一,cin.get 目的 防止有些程式,輸出結果後關閉視窗。作用 讀取下一次鍵盤敲擊。所有的鍵盤敲擊,直到按下enter才傳送給程式。二,c 新式風格 標頭檔案 c 專有的 iostream c專有的 cmath 就是省略了 h 三,名空間 作用 使在c 標準類庫中定義的名字在本程式中可以使用 用法...