C primer一二章筆記

2021-10-25 12:18:01 字數 3803 閱讀 1814

編寫簡單的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 標準類庫中定義的名字在本程式中可以使用 用法...