C 學習階段總結

2021-09-13 12:45:25 字數 3540 閱讀 7838

一,復合型別

1.指標和引用

指標可以持有物件的位址,引用則是物件的別名。指標持有乙個物件的位址,稱為指標指向這個物件。

定義指標變數的語法為型別*指標變數指標存放指定型別的物件的位址,要獲取物件的位址使用取位址運算子「&」。例如:

int ival=120;

int *pi=&ival;

char ch=『a',*pc=&ch;

c++提供了一種通用指標,即void*指標,它可以持有任何型別的位址值。

指標的典型用法:(1)構建鏈式的資料結構,如鍊表和樹。

(2)管理程式執行時動態分配的物件。

(3)作為函式的引數。

引用

就是某一變數(目標)的乙個別名,對引用的操作與對變數直接操作完全一樣。

宣告型別識別符號 &引用名=目標變數名;

定義引用ra,它是變數a的引用,即別名。

int a;

int &ra=a;

以下六點需要注意

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

(2)型別識別符號是指目標變數的型別。

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

(4)引用宣告完畢後,相當於目標變數有兩個名稱即該目標原名稱和引用名,且不能再把該引用名作為其他變數名的別名。

(5)宣告乙個引用,不是新定義了乙個變數,它只表示該引用名是目標變數名的乙個別名,它本身不是一種資料型別,因此引用本身不佔儲存單元,系統也不給引用分配儲存單元。故:對引用求位址,就是對目標變數求位址。&ra與&a相等。

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

2.標準庫型別string

使用string類要包含標頭檔案 < string >

(1)定義和初始化string物件

string s1; 預設初始化,s1是乙個空串

string s2(s1); s2是s1的副本

string s2 = s1; 等價於s2(s1)

string s3(「value」); s3是字面值"value"的副本,除了最後那個空字元外

string s3 = 「value」; 等價於s3(「value」);

string s4(n,『c』); 把s4初始化為由連續n個字元c組成的串

(2)string物件上的操作

os<>s 從is中讀取字串賦給s,字串以空白分隔,返回is

getline(is,s) 從is中讀取一行賦給s,返回is

s.empty() 為空返回true,否則返回false

s.size 返回s中字元的個數

s[n] 返回s中第n個字元的引用,位置n從0計起

s1+s2 返回s1和s2連線後的結果

s1=s2 用s2的副本代替s1中原來的值

s1+=s2 追加,把s2的內容追加到s1後面

s.c—str() 轉換,c++轉換成c,字串轉換成字元陣列

s1==s2 判斷是否相等,字元完全一樣則相等

<,<=,>,>= 利用字元在字典中的順序進行比較,區分大小寫

(3)讀寫string物件

#include

using namespace std;

int main()

{string s;

cin>>s;

cout《輸出 abc

可以直接用輸入輸出流進行操作

(4)getline函式

功能:從輸入流中讀入字元,存到string變數

直到出現以下情況為止:

•讀入了檔案結束標誌

•讀到乙個新行

•達到字串的最大長度

–如果getline沒有讀入字元,將返回false,可用於判斷檔案是否結束

int main()

{string line:

while(getline(cin,line))

cout<(5)處理string物件中的字元

函式名稱 返回值

isalnum() 如果引數是字母數字,即字母或者數字,函式返回true

isalpha() 如果引數是字母,函式返回true

iscntrl() 如果引數是控制字元,函式返回true

isdigit() 如果引數是數字(0-9),函式返回true

isgraph() 如果引數是除空格之外的列印字元,函式返回true

islower() 如果引數是小寫字母,函式返回true

isprint() 如果引數是列印字元(包括空格),函式返回true

ispunct() 如果引數是標點符號,函式返回true

isspace() 如果引數是標準空白字元,如空格、換行符、水平或垂直製表符,函式返回true

isupper() 如果引數是大寫字母,函式返回true

isxdigit() 如果引數是十六進製制數字,即0-9、a-f、a-f,函式返回true

tolower() 如果引數是大寫字元,返回其小寫,否則返回該引數

toupper() 如果引數是小寫字元,返回其大寫,否則返回該引數

3.標準庫型別vector

要使用vector必須包含標頭檔案< vector >

4.迭代器

迭代器類似於指標型別,提供對物件的間接訪問。支援迭代器的型別都有返回迭代器的成員:begin()和end()。通過這兩個操作可以獲取容器上的迭代器。

標準容器迭代器的運算子

*iter 返回迭代器iter所指元素的引用

iter->men 解引用iter並獲得該元素的名為men的成員,相當於(*iter).men

++iter 令iter指示容器的下乙個元素

–iter 令iter指示容器的上乙個元素

iter1==iter2 如果兩個迭代器指示的是同乙個元素或者它指向同乙個容器的尾後迭代器,則相等。

二.c++函式

函式是乙個命名的**塊,通過呼叫函式可以執行相應的**。我們也可以編寫並使用自己的函式,需要定義函式、宣告函式、呼叫函式。

函式宣告:函式在使用前必須宣告。乙個函式可以在程式中多次宣告。函式定義也可以被用作宣告,但是函式在程式中只能定義一次。函式宣告由函式返回型別、函式名和形參列表構成。

遞迴函式:直接或間接呼叫自己的函式稱為遞迴函式。遞迴函式必須定義乙個停止條件,否則會陷入無限遞迴呼叫。

引數傳遞

傳值呼叫該方法把引數的實際值複製給函式的形式引數。在這種情況下,修改函式內的形式引數對實際引數沒有影響。

指標呼叫該方法把引數的位址複製給形式引數。在函式內,該位址用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。

引用呼叫該方法把引數的引用複製給形式引數。在函式內,該引用用於訪問呼叫中要用到的實際引數。這意味著,修改形式引數會影響實際引數。

C 階段總結

通過6周的時間去學習c 我們學習了復合資料型別,例如struct結構體 列舉型別 string字串 指標等,類和物件的應用,運算子的過載等。其中又細講了函式過載,構造和析構函式 預設建構函式 用初始化列表進行初始化等 友元函式和友元類,類的包含 組合 運算子的過載 一元二元 等。我覺得在講這些內容概...

學習階段總結(1)

知識總結 已做 計算幾何基礎 數論day1基礎 知識總結 待做 數論day2 數論day3高斯消元 計算幾何 二 這些天的學習不算好也不算差,上課的注意力集中度還不錯,就算有神遊漏掉的也可以找大佬問清楚。然而知識消化的並不徹底,主要原因是這幾天的 總是wa在一些弱智的地方,各種方法查錯,最後是重新打...

近階段學習總結

工作日誌 要養成寫工作日誌的習慣 記錄下每天的學習情況,包括新學的知識和每天的收穫 要對每天新學的知識加以總結,讓每一天的時間不至於白費,一定要總結,當天學到的新的知識點,尤其要反覆更新和學習,才能舉一反三。要專注於自己的事情,不要為外界的事情分心,一定要專注於自己的事情,才能讓自己走的更遠。要把握...