日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 入门笔记1

發布時間:2025/3/15 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 入门笔记1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.關于注釋

注釋總是以 /* 開始并以 */ 結束。這意味著,一個注釋對不能出現在另一個注釋對中。由注釋對嵌套導致的編譯器錯誤信息容易使人迷惑。

?

當注釋掉程序的一大部分時,似乎最簡單的辦法就是在要臨時忽略的區域前后放一個注釋對。問題是如果那段代碼已經有了注釋對,那么新插入的注釋對將提前終止。臨時忽略一段代碼更好的方法,是用編輯器在要忽略的每一行代碼前面插入單行注釋。這樣,你就無需擔心要注釋的代碼是否已包含注釋對。

?

二.關于頭文件

標準庫的頭文件用尖括號 < > 括起來,非標準庫的頭文件用雙引號 " " 括起來。

?

?

三.數據類型

表示數值即整數和浮點數的類型。浮點型值有三種類型:long double 、double 和 float,分別表示擴展精度值、雙精度值和單精度值。一般總是使用 double 型。特別地,float 只能保證六位有效數字,這對于大多數的計算來說都不夠。

表示整數、字符和布爾值的算術類型合稱為整型。整型包括 bool、char、wchar_t、short 、int 和 long 字符類型有兩種:char 和 wchar_t。char 類型保證了有足夠的空間,能夠存儲機器基本字符集中任何字符相應的數值,因此,char 類型通常是單個機器字節(byte)。wchar_t 類型用于擴展字符集,比如漢字和日語,這些字符集中的一些字符不能用單個 char 表示。 bool 類型表示真值 true 和 false。可以將算術類型的任何值賦給 bool 對象。0 值算術類型代表 false,任何非 0 的值都代表 true。

整型可以是帶符號或無符號的。

1.除 bool 類型外,整型可以是帶符號的(signed)也可以是無符號的(unsigned)。

2.顧名思義,帶符號類型可以表示正數也可以表示負數(包括 0),而無符號型只能表示大于或等于 0 的數。 整型 int、short 和 long 都默認為帶符號型。

3.要獲得無符號型則必須指定該類型為 unsigned,比如 unsigned long。unsigned int 類型可以簡寫為 unsigned,也就是說,unsigned 后不加其他類型說明符意味著是 unsigned int 。

4.和其他整型不同,char 有三種不同的類型:plain char 、unsigned char 和 signed char。雖然 char 有三種不同的類型,但只有兩種表示方式。可以使用 unsigned char 或 signed char 表示 char 類型。使用哪種 char 表示方式由編譯器而定。

?

四.字面值

1.以 0(零)開頭的字面值整數常量表示八進制,以 0x 或 0X 開頭的表示十六進制. 沒有 short 類型的字面值常量。

2.字面值整數常量的類型默認為 int 或 long 類型。其精度類型決定于字面值——其值適合 int 就是 int 類型,比 int 大的值就是 long 類型。通過增加后綴,能夠強制將字面值整數常量轉換為 long、unsigned 或 unsigned long 類型。通過在數值后面加 L 或者 l(字母“l”大寫或小寫)指定常量為 long 類型。

3.類似地,可通過在數值后面加 U 或 u 定義 unsigned 類型。同時加 L 和 U 就能夠得到 unsigned long 類型的字面值常量。但其后綴不能有空格:

128u /* unsigned */ 1024UL /* unsigned long */1L /* long */ 8Lu /* unsigned long */沒有 short 類型的字面值常量。.4.通常可以用十進制或者科學計數法來表示浮點字面值常量。使用科學計數法時,指數用 E 或者 e 表示。默認的浮點字面值常量為 double 類型。在數值的后面加上 F 或 f 表示單精度。同樣加上 L 或者 l 表示擴展精度(再次提醒,不提倡使用小寫字母l)。下面每一組字面值表示相同的值: 3.14159F .001f 12.345L 0.3.14159E0f 1E-3F 1.2345E1L 0e05.單詞 true 和 false 是布爾型的字面值: bool test = false;

可打印的字符型字面值通常用一對單引號來定義:

'a' '2' ',' ' ' // blank

這些字面值都是 char 類型的。在字符字面值前加 L 就能夠得到 wchar_t 類型的寬字符字面值。如:

L'a' 6.為了兼容 C 語言,C++ 中所有的字符串字面值都由編譯器自動在末尾添加一個空字符。字符字面值 'A' // single quote: character literal

表示單個字符 A,然而

"A" // double quote: character string literal

表示包含字母 A 和空字符兩個字符的字符串。

7.處理長字符串有一個更基本的(但不常使用)方法,這個方法依賴于很少使用的程序格式化特性:在一行的末尾加一反斜線符號可將此行和下一行當作同一行處理。

// ok: A \ before a newline ignores the line break std::cou\ t << "Hi" << st\ d::endl;等價于 std::cout << "Hi" << std::endl;

注意反斜線符號必須是該行的尾字符——不允許有注釋或空格符。同樣,后繼行行首的任何空格和制表符都是字符串字面值的一部分。正因如此,長字符串字面值的后繼行才不會有正常的縮進。

8.兩個相鄰的僅由空格、制表符或換行符分開的字符串字面值(或寬字符串字面值),可連接成一個新字符串字面值。這使得多行書寫長字符串字面值變得簡單:

// concatenated long string literalstd::cout << "a multi-line ""string literal ""using concatenation"<< std::endl;

執行這條語句將會輸出:

a multi-line string literal using concatenation??

五.變量

1.C++中的變量名,即變量的標識符,可以由字母、數字和下劃線組成。變量名必須以字母或下劃線開頭,并且區分大小寫字母:C++ 中的標識符都是大小寫敏感的。

2.C++ 支持兩種初始化變量的形式:復制初始化和直接初始化。復制初始化語法用等號(=),直接初始化則是把初始化式放在括號中:

int ival(1024); // direct-initialization int ival = 1024; // copy-initialization

C++ 是一種靜態類型語言:變量和函數在使用前必須先聲明。變量可以聲明多次但是只能定義一次。定義變量時就進行初始化幾乎總是個好主意

3.當一個定義中定義了兩個以上變量的時候,每個變量都可能有自己的初始化式。 對象的名字立即變成可見,所以可以用同一個定義中前面已定義變量的值初始化后面的變量。已初始化變量和未初始化變量可以在同一個定義中定義。兩種形式的初始化文法可以相互混合。

對象可以用任意復雜的表達式(包括函數的返回值)來初始化

4.定義時指定了初始值的對象被稱為是已初始化的。當定義沒有初始化式的變量時,系統有時候會幫我們初始化變量。這時,系統提供什么樣的值取決于變量的類型,也取決于變量定義的位置。

內置類型變量是否自動初始化取決于變量定義的位置。在函數體外定義的變量都初始化成 0,在函數體里定義的內置類型變量不進行自動初始化。除了用作賦值操作符的左操作數,未初始化變量用作任何其他用途都是沒有定義的。未初始化變量引起的錯誤難于發現。

5.C++中的對象:我們遵循更為通用的用法,即對象是內存中具有類型的區域。我們可以自由地使用對象描述程序中可操作的大部分數據,而不管這些數據是內置類型還是類類型,是有名字的還是沒名字的,是可讀的還是可寫的。

6.類類型變量的初始化:每個類都定義了該類型的對象可以怎樣初始化。類通過定義一個或多個構造函數來控制類對象的初始化

7.聲明和定義:

變量的定義用于為變量分配存儲空間,還可以為變量指定初始值。在一個程序中,變量有且僅有一個定義。

聲明用于向程序表明變量的類型和名字。表明在程序中其他地方定義的變量、函數或類型的存在性。有些聲明也是定義。只有定義才為變量分配存儲空間。

定義也是聲明:當定義變量時我們聲明了它的類型和名字。可以通過使用extern關鍵字聲明變量名而不定義它。不定義變量的聲明包括對象名、對象類型和對象類型前的關鍵字extern:

extern int i; // declares but does not define i int i; // declares and defines i

extern 聲明不是定義,也不分配存儲空間。事實上,它只是說明變量定義在程序的其他地方。程序中變量可以聲明多次,但只能定義一次。

如果聲明有初始化,則可以看作是定義:

extern double pi = 3.1416

只有當 extern 聲明位于函數外部時,才可以含有初始化式。

非 const 變量默認為 extern。

8.名字的作用域:用來區分名字的不同意義的上下文稱為作用域. C++ 語言中,大多數作用域是用花括號來界定的。一般來說,名字從其聲明點開始直到其聲明所在的作用域結束處都是可見的。

#include int main(){ int sum = 0; // sum values from 1 up to 10 inclusive for (int val = 1; val <= 10; ++val) sum += val; // equivalent to sum = sum + val std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl;return 0;}

定義在所有函數外部的名字具有全局作用域.?

變量 sum 有局部作用域

名字 val 更有意思,它定義在 for 語句的作用域中,只能在 for 語句中使用,而不能用在 main 函數的其他地方。它具有語句作用域

9.一般來說,變量的定義或聲明可以放在程序中能擺放語句的任何位置。變量在使用前必須先聲明或定義。

通常把一個對象定義在它首次使用的地方是一個很好的辦法。

10.const 限定符:因為常量在定義后就不能被修改,所以定義時必須初始化

與其他變量不同,除非特別說明,在全局作用域聲明的 const 變量是定義該對象的文件的局部變量。此變量只存在于那個文件中,不能被其他文件訪問。

通過指定 const 變更為 extern,就可以在整個程序中訪問 const 對象:

// file_1.cc// defines and initializes a const that is accessible to other filesextern const int bufSize = fcn();// file_2.ccextern const int bufSize; // uses bufSize from file_1 // uses bufSize defined in file_1 for (int index = 0; index != bufSize; ++index) // ...

11.引用是一種復合類型,通過在變量名前添加“&”符號來定義。復合類型是指用其他類型定義的類型。在引用的情況下,每一種引用類型都“關聯到”某一其他類型。

復合類型是指用其他類型定義的類型,

a.不能定義引用類型的引用,但可以定義任何其他類型的引用。引用必須用與該引用同類型的對象初始化.

b.因為引用只是它綁定的對象的另一名字,作用在引用上的所有操作事實上都是作用在該引用綁定的對象上.

c.當引用初始化后,只要該引用存在,它就保持綁定到初始化時指向的對象。不可能將引用綁定到另一個對象。

引用的基本知識

引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。引用的聲明方法:類型標識符 &引用名=目標變量名; 說明:

(1)&在此不是求地址運算,而是起標識作用。

(2)類型標識符是指目標變量的類型。

(3)聲明引用時,必須同時對其進行初始化。

(4)引用聲明完畢后,相當于目標變量名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變量名的別名。

?? int a,&ra=a;a為目標原名稱,ra為目標引用名。給ra賦值:ra=1; 等價于 a=1;

(5)聲明一個引用,不是新定義了一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。故:對引用求地址,就是對目標變量求地址。&ra與a相等。

(6)不能建立數組的引用。因為數組是一個由若干個元素所組成的集合,所以無法建立一個數組的別名。

例如: Point pt1(10,10);

Point &pt2=pt1; 定義了pt2為pt1的引用。通過這樣的定義,pt1和pt2表示同一對象。

需要特別強調的是引用并不產生對象的副本,僅僅是對象的同義詞。因此,當下面的語句執行后:

pt1.offset(12,12);

pt1和pt2都具有(12,12)的值。

引用必須在定義時馬上被初始化,因為它必須是某個東西的同義詞。你不能先定義一個引用后才

初始化它。例如下面語句是非法的:

Point &pt3;

pt3=pt1;

12.const 引用可以綁定到 const 對象、非 const 對象或右值的引用。const 引用不能改變與其相關聯的對象。const 引用可以初始化為不同類型的對象或者初始化為右值,如字面值常量:

int i = 42;// legal for const references only const int &r = 42; double dval = 3.14; const int &ri = dval;

非 const 引用只能綁定到與該引用同類型的對象。

13.typedef 可以用來定義類型的同義詞:

typedef double wages; // wages is a synonym for double typedef int exam_score; // exam_score is a synonym for int typedef wages salary; // indirect synonym for double

typedef 定義以關鍵字 typedef 開始,后面是數據類型和標識符。標識符或類型名并沒有引入新的類型,而只是現有數據類型的同義詞。typedef 名字可出現在程序中類型名可出現的任何位置。

?

14.enum:

a.枚舉的定義包括關鍵字 enum,其后是一個可選的枚舉類型名,和一個用花括號括起來、用逗號分開的枚舉成員列表。

b.可以為一個或多個枚舉成員提供初始值,用來初始化枚舉成員的值必須是一個常量表達式。常量表達式是編譯器在編譯時就能夠計算出結果的整型表達式。整型字面值常量是常量表達式

c.不能改變枚舉成員的值。枚舉成員本身就是一個常量表達式,所以也可用于需要常量表達式的任何地方。

?

15.類類型:類定義以關鍵字 class 開始,其后是該類的名字標識符。類體位于花括號里面。花括號后面必須要跟一個分號。

a.定義了類,也就定義了一種新的類型。類名就是該類型的名字。通過命名 Sales_item 類,表示 Sales_item 是一種新的類型,而且程序也可以定義該類型的變量。
b.每一個類都定義了它自己的作用域.也就是說,數據和操作的名字在類的內部必須唯一,但可以重用定義在類外的名字。c.定義變量和定義數據成員存在非常重要的區別:一般不能把類成員的初始化作為其定義的一部分。當定義數據成員時,只能指定該數據成員的名字和類型。類不是在類定義里定義數據成員時初始化數據成員,而是通過稱為構造函數的特殊成員函數控制初始化。

d.用 class 和 struct 關鍵字定義類的唯一差別在于默認訪問級別:默認情況下,struct 的成員為 public,而 class 的成員為 private。

?

16.頭文件:頭文件一般包含類的定義、extern 變量的聲明和函數的聲明。使用或定義這些實體的文件要包含適當的頭文件。 a.頭文件的正確使用能夠帶來兩個好處:保證所有文件使用給定實體的同一聲明;當聲明需要修改時,只有頭文件需要更新。 b.設計頭文件還需要注意以下幾點:頭文件中的聲明在邏輯上應該是統一的。編譯頭文件需要一定的時間。如果頭文件太大,程序員可能不愿意承受包含該頭文件所帶來的編譯時代價。為了減少處理頭文件的編譯時間,有些 C++ 的實現支持預編譯頭文件。

c.頭文件用于聲明而不是用于定義,因為頭文件包含在多個源文件中,所以不應該含有變量或函數的定義。對于頭文件不應該含有定義這一規則,有三個例外。頭文件可以定義類、值在編譯時就已知道的 const 對象和 inline 函數。這些實體可在多個源文件中定義,只要每個源文件中的定義是相同的。

d.一些 const 對象定義在頭文件中:

????? 1.當該 const 變量是用常量表達式初始化時,可以保證所有的變量都有相同的值。但是在實踐中,大部分的編譯器在編譯時都會用相應的常量表達式替換這些 const 變量的任何使用。所以,在實踐中不會有任何存儲空間用于存儲用常量表達式初始化的 const 變量。

????? 2.如果 const 變量不是用常量表達式初始化,那么它就不應該在頭文件中定義。相反,和其他的變量一樣,該 const 變量應該在一個源文件中定義并初始化。應在頭文件中為它添加 extern 聲明,以使其能被多個文件共享。

const double pi = 3.1416;//可以定義在頭文件中const double sq2 = sqrt(2.0);//不可以定義在頭文件中

17.預處理器:#include 設施是C++ 預處理器的一部分。預處理器處理程序的源代碼,在編譯器之前運行。

a.設計頭文件時,應使其可以多次包含在同一源文件中,這一點很重要。我們必須保證多次包含同一頭文件不會引起該頭文件定義的類和對象被多次定義。使得頭文件安全的通用做法,是使用預處理器定義頭文件保護符。頭文件保護符用于避免在已經見到頭文件的情況下重新處理該頭文件的內容

b.頭文件應該含有保護符(為防止頭文件被同一源文件多次包含而定義的預處理器變量。),即使這些頭文件不會被其他頭文件包含。編寫頭文件保護符并不困難,而且如果頭文件被包含多次,它可以避免難以理解的編譯錯誤。

?

#ifndef SALESITEM_H #define SALESITEM_H // Definition of Sales_itemclass and related functions goes here #endif /*1.測試 SALESITEM_H 預處理器變量是否未定義。如果 SALESITEM_H 未定義,那么 #ifndef 測試成功,跟在 #ifndef 后面的所有行都被執行,直到發現 #endif。相反,如果 SALESITEM_H 已定義,那么 #ifndef 指示測試為假,該指示和 #endif 指示間的代碼都被忽略。2.為了保證頭文件在給定的源文件中只處理過一次,我們首先檢測 #ifndef。第一次處理頭文件時,測試會成功,因為 SALESITEM_H 還未定義。下一條語句定義了 SALESITEM_H。那樣的話,如果我們編譯的文件恰好又一次包含了該頭文件。#ifndef 指示會發現 SALESITEM_H 已經定義,并且忽略該頭文件的剩余部分。*/

?

?



轉載于:https://www.cnblogs.com/ForFreeDom/archive/2012/03/18/2404392.html

總結

以上是生活随笔為你收集整理的C++ 入门笔记1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97人妻精品一区二区三区动漫 | 国产一区二区三区四区在线观看 | 国产又色又爽无遮挡免费动态图 | 波多野结衣一二三区 | 日韩激情图片 | 毛片大片 | 国产毛片视频 | 久久久视频6r| 开心黄色网 | 动漫一区二区 | 老司机在线观看视频 | 日韩在线视频免费播放 | 九九热免费精品视频 | 久久久精品 | 天天色av | 亚洲国产成人精品视频 | 国产不雅视频 | 久草小说 | 国产精品一线二线 | 国产色秀视频 | 亚洲精品国产欧美在线观看 | 国产免费自拍 | 奇米精品一区二区三区在线观看一 | 国产老熟女伦老熟妇露脸 | 国产精品无码电影 | 天天看夜夜 | 老头糟蹋新婚少妇系列小说 | 麻豆av免费观看 | 国产鲁鲁视频在线观看免费 | 神马一区二区三区 | 爽妇网国产精品 | 波多野结衣一区在线 | 天天色综合1| 干b视频在线观看 | 免费看黄色一级大片 | 在线观看av大片 | 深夜国产视频 | 国产免费av一区二区三区 | 欧美一区二区三区激情啪啪 | 中文字幕人妻互换av久久 | 欧美日韩电影一区二区三区 | 色婷婷狠狠 | 国产乱淫a∨片免费视频 | 色欲一区二区三区精品a片 在线观看黄网站 | 欧美日韩性视频 | 6699嫩草久久久精品影院 | 国产精品国产精品国产专区蜜臀ah | 性欧美最猛 | www.九九热.com| 亚洲欧美日韩精品久久 | 重口另类 | 日日碰日日操 | 正在播放adn156松下纱荣子 | 91麻豆蜜桃一区二区三区 | 亚洲淫片| 精品国产91乱码一区二区三区 | 精品欧美激情精品一区 | 九九精品在线视频 | 丁香在线 | 国产激情一区 | 欧美国产一级片 | 国产91精品看黄网站在线观看 | 久久精品亚洲一区二区 | 久久久精品中文字幕 | 天堂少妇| 无码一区二区三区 | 中文字幕福利视频 | 一级视频在线观看 | 日韩免费观看av | 国产免费a视频 | 黄色免费网页 | 一区二区三区蜜桃 | 美女激情网| 黄瓜视频色 | 欧美激情15p | 黄色片链接 | 色吊丝中文字幕 | 国产免费无遮挡吸奶头视频 | 日本暧暧视频 | 日本视频在线免费观看 | 国产白丝袜美女久久久久 | 国产原创91 | 国产精品无码一区二区三 | 美女扣逼喷水视频 | 国产精品人妻 | 成人观看 | 可以在线观看的av网站 | 四虎1515hh.com | 中国18videosex极品 | 玖玖精品在线 | 一二三区视频 | 日韩黄色一级 | 在线观看日韩视频 | 以女性视角写的高h爽文 | 性按摩玩人妻hd中文字幕 | 永久免费av在线 | 日本免费三级网站 | 超碰公开免费 | 精品国产aⅴ麻豆 |