一、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
]/輸出a[0][0]
cout<<(*
(p+1))
[0]/輸出a[1][0]
cout<<(*
(p+2))
[0]/輸出a[2][0]
cout<<(*
(p))[5
]/輸出a[1][1] 等價於 (*a)[5] 等價於(*(a+1))[1]
}
字串與指標
#include
using
namespace std;
intmain()
;//字元指標陣列
string str3 =
"i am a programmer too."
;//字串變數
cout<<
"str: "
/輸出str字串
cout<<
"str1: "
<<
*(str1+1)
/輸出str1[1]
cout<<
"str2: "
<<*(
*(str2+1)
+1)/輸出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...