c 學習筆記

2021-09-17 07:11:35 字數 3247 閱讀 4223

1、typedef為乙個已有型別取乙個新的名字。

2、c++中的識別符號:用來標識變數、函式、類、模組或任何其他使用者自定義專案的名稱。

3、區域性變數:在函式或者**塊內部定義的變數(在函式內區域性變數會覆蓋全域性變數的值)

全域性變數:在所有函式外部宣告的變數

形式引數:在定義函式名和函式體的時候使用的引數,用來接收呼叫該函式時傳遞的引數,也就是實參。只在呼叫的時候才分配記憶體單元,呼叫結束後釋放空間,只在函式內部有效

實際引數:呼叫某函式時要傳遞給某函式的引數。

4、定義常量兩種方法::#define(在函式頭之後函式體之前)和const

5、儲存類:

auto:宣告變數時根據初始化表示式自動推斷該變數的型別、宣告函式時函式返回值的佔位符。

register:用於定義儲存在暫存器中而不是 ram 中的區域性變數。

static:指示編譯器在程式的生命週期內保持區域性變數的存在,而不需要在每次它進入和離開作用域時進行建立和銷毀。因此,使用 static 修飾區域性變數可以在函式呼叫之間保持區域性變數的值。

extern:

6、函式宣告中引數的名稱不重要,但是一定要有引數的型別

7、lambda函式:對匿名函式的支援

8、傳遞陣列的三種方式:

現在初始化乙個陣列,例int a[3] =

b = myfunction(a)

void myfunction(int *param)

void myfunction(int param[10])

void myfunction(int param)

9、指標陣列

#include

using namespace std;

const int max = 4;

int main ()

;for (int i = 0; i < max; i++)

return 0; }

這個很好理解,我們來將問題拆分一下,首先是定義個字串:

char *name = "zara ali";

那麼定義完成之後*name得到的就應該是z,因為z儲存的是字串的首位址,它的型別是指向字元的指標,表示式*name拿到的正是這個位址中儲存的字元z

然後是定義字串陣列:

char *name = ;

name中儲存的其實是一堆指標,這一堆指標組成了乙個陣列,其中name[0]這個指標正是第乙個字串的首位址,然後*(name[0])又回到第乙個問題中了

在c++中,*的優先順序小於

10、引用——某個已存變數的別名

引用很容易與指標混淆,它們之間有三個主要的不同:

關於c++中使用引用的原因:

主要在於形參實參傳遞值這塊。

形參實參都是變數名的時候,形參的改變不會改變實參的值u,換句話說是單向,而如果形參是指標或者引用,當是指標時,指標指向實參的首位址,會進而改變實參的值,而引用的位址和實參位址相同,所以也會改變實參的值,這樣就是雙向傳遞。

(1)將變數名作為實參和形參。這時傳給形參的是變數的值,傳遞是單向的。如果在執行函式期間形參的值發生變化,並不傳回給實參。因為在呼叫函式時,形參和實參不是同乙個儲存單元。// 同 c

(2) 傳遞變數的指標。形參是指標變數,實參是乙個變數的位址,呼叫函式時,形參(指標變數)指向實參變數單元。這種通過形參指標可以改變實參的值。// 同 c

(3) c++提供了 傳遞變數的引用。形參是引用變數,和實參是乙個變數,呼叫函式時,形參(引用變數)指向實參變數單元。這種通過形參引用可以改變實參的值。

11、定義類成員函式兩種方式:

(1)class a                    (2)   int a::b(void)

int b(void)                  } 

使用第二種方法時,應該先在類中宣告類函式,在寫該函式時前邊應該是返回值的型別

12、什麼是建構函式?

類中的一種特殊成員函式,命名和類名相同,宣告時直接就是:類名()

定義時:類名::類名()

如果建構函式無引數,那麼在主函式例項化物件的時候就直接例項化就行,但是如果有引數的話就得這樣:line line(10)

13、什麼是析構函式?

刪除所建立物件時執行,函式名與類名相同,前邊有個~

14、什麼是拷貝建構函式?

如果類帶有指標變數,並有動態記憶體分配,則它必須有乙個拷貝建構函式。

line( const line &obj);    //類名(const 類名 &obj)

15、this指標:

每乙個物件都可以通過this指標訪問自己的位址,友元函式沒有this指標,只有類的成員函式才有this指標

this指標在成員函式開始前構造,成員函式結束後清除;

16、c++類的靜態成員在類中宣告static int objectcount;但是不能再類中初始化,在類的外邊初始化的時候int box::objectcount = 0;(其中objectcount為靜態成員)

靜態函式只要使用類名家範圍解析運算子::就可以訪問;靜態成員函式只能訪問靜態成員資料、其他靜態成員函式和類外部的其他函式。

靜態成員函式與普通成員函式的區別:

17、繼承

依據乙個類定義乙個類,代表is a關係。優點:建立和維護乙個應用程式變得更容易。達到了重用**功能和提高執行時間的效果。

格式:class rectangle: public shape

乙個派生類繼承了所有的基類方法,但下列情況除外:

18、函式過載:在同乙個作用域內,可以宣告幾個功能類似的同名函式,但是這些同名函式的形式引數(指引數的個數、型別或者順序)必須不同。

****運算子過載:

19、c++介面:

c++ 介面是使用抽象類來實現的,抽象類與資料抽象互不混淆,資料抽象是乙個把實現細節與相關的資料分離開的概念。

如果類中至少有乙個函式被宣告為純虛函式,則這個類就是抽象類。

// 純虛函式 virtual double getvolume() = 0;

C 學習筆記( )

一 語法 迴圈 foreach 型別識別符號 in 表示式 code 用法 例子int temp foreach int num in temp 每次從temp取乙個元素賦給num直至取完 console.writeline n num 每行顯示乙個元素 執行結果 c 中唯讀 只寫控制 class ...

C 學習筆記

1.函式特徵 有函式頭和函式體 接受乙個引數 返回乙個值 需要乙個原型。2.c 命名規則 在名稱中只能使用字母字元 數字和下劃線 名稱的第乙個字元不能是數字 區分大寫字母和小寫字母 不能將c 關鍵字用作名稱 以兩個下劃線或下劃線和大寫字母打頭的名稱被保留給實現 編譯器及其使用的資源 使用,以乙個下劃...

c 學習筆記

屬性 屬性開頭字母大寫 屬性可以判斷輸入的非法值 屬性本身不儲存值 依靠字段 索引器 using system using system.collections.generic using system.linq using system.text namespace b try catch exc...