C++語言
-
范圍for陳述句、
-
用于遍歷一個序列、
-
int a[]{ 1,2,4,6,9 }; for (auto b : a)//將數值a的元素依次拷貝到b里面、 { cout << b << endl; } int a[]{ 1,2,4,6,9 }; for (auto &b : a)//添加&可以省去拷貝的動作、 { cout << b << endl; }
-
-
-
動態記憶體分配問題、
-
供程式使用的存盤空間、
-
C語言分3個區域、
- 程式區、
- 靜態存盤區、
- 動態存盤區、
-
C++分為5個區域、
- 堆疊 、一般函式內的區域變數存盤區域、由編譯器自動分配和釋放、
- 堆 程式員使用malloc\new分配、用free\delete來釋放、
- 忘記釋放后系統會回收、系統執行完程式后回收、
- 全域、靜態存盤區域、、釋放全域變數和靜態變數static,
- 程式結束時會釋放常
- 變數存盤區
- 常量存盤的區域
- 程式代碼區、
-
堆和堆疊的區別、
- 堆疊、
- 空間有限、大小由系統規定空間、
- 自動分配、
- 堆、
- 只要不超實際物理記憶體且不超系統允許的最大記憶體之內都可以分配、
- 堆疊、
-
malloc和feee
-
在C語言中使用malloc和free來分配和釋放記憶體、malloc和free是函式;
-
int* a = NULL; a = (int *)malloc(sizeof(int)); if (a != NULL); { cout << "分配成功" << endl; *a = 4; cout << *a << endl; free(a);//釋放記憶體, } -
malloc——動態記憶體分配、是函式就會有在末尾有括號、括號內容是形參、
-
strcpy 拷貝記憶體是直接拷貝、不管大小、如果溢位則只保留未溢位部分、溢位部分不保留、同時會覆寫其它記憶體內容、
-
strcpy_s則不會出現此錯誤、strcpy_s未了彌補strcpy的錯誤需要設定兩個引數、第二引數是限制字串大小位元組、超過限制的位元組則會報錯、trcpy_s(a,10,"要拷貝的內容")、將要拷貝的內容拷貝到a里面、而10則是限制的位元組數、也就是往a里面拷貝的內容不能超過10個位元組否則會報錯、本次字串內容超過10個位元組、
char* a = NULL; a = (char *)malloc(50*sizeof(int));//分配50個位元組 if (a != NULL); { /*cout << "分配成功" << endl; *a = 10;*/ strcpy_s(a, 40," 拷貝的內容"); cout << a << endl; free(a);//釋放記憶體, } -
-
new和delete 是運算子(識別符號)而非函式、
-
C++語言中使用、也是在編譯階段執行、
-
nwe和delete不僅和malloc和free的用途一樣還會呼叫物件的建構式、
-
三種格式、
-
指標變數名 =new型別識別符號;
-
int* a = new int; if (a != NULL); { *a = 1; cout << *a << endl; delete a; }
-
-
指標變數名 =new型別識別符號(初始值);表示初始值、
-
int* a = new int(10); if (a != NULL); { /**a = 1;*/ cout << *a << endl; delete a;}
-
-
指標變數名 =new型別識別符號[記憶體單元 ];表示陣列
-
int* a = new int[10];//整型陣列 if (a != NULL); { int* b = a; *b++ = 10;//陣列第一個值是10 a[0] 10 *b++ = 15;//陣列第二個值是15 a[1] 15 *a = 1; cout << *a << endl; cout << *(a+1) << endl; delete[] a;//釋放陣列空間、 }
-
-
不要重復呼叫free和delete、第一使用是釋放本次malloc和new的記憶體、重復使用時則不知道釋放的時誰的記憶體、
-
有malloc必有free、有new必有delete、
-
-
-
-
nullptr、
-
C++11的新關鍵字、代表空指標、和null一樣、但是null可以當成整型0使用、而cullptr則不可以、
-
nullptr避免指標與整型相混淆、
-
cout << typeid(NULL).name() << endl; cout << typeid(nullptr).name() << endl; 不同的型別、 -
對于指標的初始化中、和與指標有關的情況下盡量使用nullptr來替代null、
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/135372.html
標籤:C++
