2020 11 03 C 基礎知識

2021-10-10 05:34:16 字數 4157 閱讀 6766

一、hello world!

#include

using

namespace std;

intmain()

#include< iostream >

這不是c++語句,是乙個預處理語句,編譯器的預處理器把輸出流的標準標頭檔案包括在本程式中,所以不需要在句末加分號。

#include< > 與 #include" 「區別

< >常用來包含系統提供的標頭檔案,編譯器會到儲存系統標準標頭檔案的位置查詢標頭檔案,」 "常用於包括程式設計師自己編號的標頭檔案,用這種格式時,編譯器先查詢當前目錄是否有指定名稱的標頭檔案,然後從標準頭目錄中進行查詢。

iostream與iostream.h區別

字尾為.h的標頭檔案在c++標準已經明確提出不再支援了,.h字尾是為了區分c與c++。

using namespace std;

命名空間是為了讓大量類名共存而不至於引起衝突而設計的。

二、函式

c語言是一種面向過程的程式語言,而c++卻是一種物件導向的程式語言。在c++程式裡,資料和對資料的處理都被封裝在了乙個物件裡。

形參與實參的區別

形參只有被呼叫時才分配記憶體單元,在呼叫結束時,立即釋放所分配的記憶體單元。形參與實參的型別應相同或賦值相容。

int

min(

int a,

int b)

//a b是形參

intmain()

函式過載

c++允許函式同名,但要求不同數量引數或不同型別引數。

三、陣列

定義陣列

一維陣列:int a[10] =

1 2 3 4 5 6 7 8 9 10

二維陣列:int b[2][2] =

1 23 4

字元陣列

char str[10] = 「book」

strlen()與sizeof()區別:

(1)strlen()是函式,在執行時才能計算。引數必須是字元型指標(char *),且必須是以』\0』結尾的。當陣列名作為引數傳入時,實際上陣列已經退化為指標。功能:返回字串的長度。

(2)sizeof()是運算子,在編譯時就計算好了,**功能:用於計算資料空間的位元組數。**sizeof不能用來返回動態分配的記憶體的空間大小。

四、指標

概念指標也是一種變數,普通變數存放的是實際的資料,指標變數包含的是記憶體中的一塊位址,這種位址指向某個變數或函式。指標的內容包括:指標的型別、指標所指向的型別、指標的值以及指標本身所佔的記憶體區。

#include

using

namespace std;

intmain()

陣列與指標

(1)一維陣列

*(p+i) 與 *(a+i) 等價於 a[i]

(2)二維陣列

輸出陣列第i行第j列乙個元素(a[i][j]),方式: *( p[i]+j )、 *( *(p+i)+j )、( *( p+i ) )[j]、p[i][j]

(3)**

#include

using

namespace std;

intmain()

;int

*p1;

p1 = a;

int*p2;

p2 =

&a[0];

cout<<

"*p1 = "

<<

*p1<<

" and *p2 = "

<<

*p2<<

" so p1 = a 等價於 p2 = &a[0]"

;}

#include

using

namespace std;

intmain()

;int

(*p)[4

];/** 1 2 3 4

5 6 7 8

9 10 11 12

**/p = a;

cout<<

(*p)[0

]

cout<<(*

(p+1))

[0]

cout<<(*

(p+2))

[0]

cout<<(*

(p))[5

]

}

字串與指標

#include

using

namespace std;

intmain()

;//字元指標陣列

string str3 =

"i am a programmer too."

;//字串變數

cout<<

"str: "

cout<<

"str1: "

<<

*(str1+1)

cout<<

"str2: "

<<*(

*(str2+1)

+1)

cout<<

"str3: "

<}

函式與指標

函式指標首先是個指標變數,而且這個變數指向乙個函式。

宣告函式指標:返回值型別 (*指標名)(引數1,引數2·······)

#include

using

namespace std;

intmmin

(int x,

int y)

intmmax

(int x,

int y)

intmain()

五、引用

引用是什麼

符號:&,在c語言中代表取位址符,在c++中代表著引用。

引用宣告方法:型別 &引用名 = 目標變數名;

例子:int a;

int &r = a;//定義引用r,即a的別名,a、r占用記憶體的同一儲存單元。

特性:a變r就變,r變a就變,因此將引用作為引數,可以使形參與實參為同一儲存單元,因此形參在函式中的改變會導致實參的改變。

常引用宣告方法:const 型別 &引用名 = 目標變數

注:常引用不能通過引用對目標變數的值進行修改。

#include

using

namespace std;

#define maxnums 999999

void

returnfive

(int a,

int&b)

intmain()

五、引用

資料型別位元組

型別/編譯器

16位編譯器

32位編譯器

64位編譯器

void00

0char11

1short int22

2int24

4float44

4double88

8long44

8long double812

16long long88

8結構體、共用體、列舉

①結構體

struct 結構名

;②共用體

struct 共用體名

;③列舉

enum 列舉型別名

結構體、共用體在記憶體單元占用位元組數計算

①struct位元組計算

全部相加,在看是否是結構體中最大型別位元組數的倍數,不是的話要補充位元組。

②union位元組計算

union中變數共用記憶體,應以最長的為準,預設記憶體對齊方式,必須根據最長的型別對齊。

#include

using

namespace std;

#define maxnums 999999

struct a

;union b

;int

main()

C 基礎知識

抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...

c 基礎知識

或運算的意義是什麼 0 0 0 0 1 1 1 0 1 1 1 1 無進製與運算的意義是什麼 在vc中,視窗的每個屬性對應乙個只有一位為1的16位的二進位制數,當增加某屬性做或運算 即可,取消某個屬性只需與 上這個屬性的取反。cs.style ws maximizebox 和cs.style cs....

C 基礎知識

1 malloc和new區別與聯絡 a malloc malloc為函式,需要標頭檔案,申請的無型別,需要強制轉換 free釋放。示例 char p char malloc 10 sizeof char free p b new new是運算子,不需要標頭檔案,申請的是有型別的,自動呼叫建構函式 d...