您好,登錄后才能下訂單哦!
這篇“C++與C語言的區別是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C++與C語言的區別是什么”文章吧。
#include <iostream> #include<string> using namespace std; struct MM { char name[20]; int age; }; int main() { struct MM girl; MM mm;//C++中不需要struct關鍵字 return 0; }
在結構體中聲明,在結構體外實現,當然可以直接在結構體中實現
結構體中函數訪問數據,是可以直接訪問
學會調用,和數據成員方式時一樣的
對象(結構體變量).成員
對象指針->成員
(*對象指針).成員
C++在沒有寫構造函數和權限限定的時候,用法和C語言的用法是一樣
#include <iostream> #include<string> using namespace std; struct MM { //屬性 //數據成員 char name[20]; int age; //行為(方法) //成員函數 void print() { cout << name << "\t" << age << endl; } void printData();//在結構體中聲明,在外面實現 int& getAge() { return age; } }; //結構體名限定,就是告訴別人這個函數來自哪里 void MM::printData() { cout << name << "\t" << age << endl; } //結構體中的變量必須要通過結構體變量(結構體指針)訪問 //c++結構體中的函數訪問屬性,可以直接訪問 int main() { struct MM girl = {"小芳",28}; MM mm = {"小麗",24};//C++中不需要struct關鍵字 girl.print(); (&mm)->printData(); MM* p = &mm; p->printData(); p->getAge() = 84; p->printData(); p->age = 1991; p->printData(); return 0; }
malloc 不帶初始化 ,calloc 帶初始化,realloc 重新申請
free 釋放
new(申請)和delete(釋放)
單個變量內存申請
數組的動態申請
結構體內存申請
例子:單個變量內存申請和數組的動態申請
#include<iostream> #include<string> using namespace std; void testNoeMemory() { //申請不做初始化 int* pInt = new int; *pInt = 123; cout << *pInt << endl; char* pChar = new char; *pChar = 'A'; cout << *pChar << endl; //申請內存做初始化 ()給單個數據做初始化 int* pNum = new int(134); cout << *pNum << endl; delete pInt; pInt = nullptr; delete pChar; pChar = nullptr; delete pNum; pNum = nullptr; } void testArrayMerrmory() { //一維數組 //1、不帶初始化 //長度可以是h變量,只要值就可以 int* pInt = new int[3];//等效產生了 int pInt[3]的數組 char* pstr = new char[15]; strcpy_s(pstr, 15, "I love you"); cout << pstr << endl; //帶初始化的 一堆數據用{} int* pNum = new int[3]{1, 2, 3}; for (int i = 0; i < 3; i++) { cout << pNum[i] << " "; } cout << endl; delete[] pNum; char* str = new char[20]{'A', 'B', '\0'}; cout << str << endl; delete[] str; str = nullptr; str = new char[20]{"Ilove you"}; cout << str << endl; delete[] str; str = nullptr; delete[] pInt;//數組的指針 不需要大小 //釋放只有兩種形式 delete 指針 delete [] 指針 //delete [][] p 沒有這種寫法 pInt = nullptr; } int main() { testNoeMemory(); return 0; }
例子:結構體內存申請
#include<iostream> #include<string> using namespace std; void testNoeMemory() { //申請不做初始化 int* pInt = new int; *pInt = 123; cout << *pInt << endl; char* pChar = new char; *pChar = 'A'; cout << *pChar << endl; //申請內存做初始化 ()給單個數據做初始化 int* pNum = new int(134); cout << *pNum << endl; delete pInt; pInt = nullptr; delete pChar; pChar = nullptr; delete pNum; pNum = nullptr; } void testArrayMerrmory() { //一維數組 //1、不帶初始化 //長度可以是h變量,只要值就可以 int* pInt = new int[3];//等效產生了 int pInt[3]的數組 char* pstr = new char[15]; strcpy_s(pstr, 15, "I love you"); cout << pstr << endl; //帶初始化的 一堆數據用{} int* pNum = new int[3]{1, 2, 3}; for (int i = 0; i < 3; i++) { cout << pNum[i] << " "; } cout << endl; delete[] pNum; char* str = new char[20]{'A', 'B', '\0'}; cout << str << endl; delete[] str; str = nullptr; str = new char[20]; cout << str << endl; delete[] str; str = nullptr; delete[] pInt;//數組的指針 不需要大小 //釋放只有兩種形式 delete 指針 delete [] 指針 //delete [][] p 沒有這種寫法 pInt = nullptr; } struct MM { char* name; int age; void printMM() { cout << name << "\t" << age << endl; } }; void testStructMerrory() { //new一個對象 int* p = new int(123); //結構體只能用大括號 MM* pMM = new MM; //結構體中指針,要做二次申請,才能strcpy,或者賦值 pMM->name = new char[20]; strcpy_s(pMM->name, 20, "李四"); pMM->age = 188; pMM->printMM(); //申請的順序和釋放的順序是相反的 delete[]pMM->name; delete pMM; } int main() { //testNoeMemory(); testStructMerrory(); return 0; }
允許大家申請一段內存,共給程序使用,綜合管理內存
只需要知道有這種用法即可,不需要大家深究為什么,因為string本身是一個類,需要講完類的大部分知識,才能追究為什么這樣做。自己也可以封裝一個string 類型
string創建
+ 帶初始化
+ 不帶初始化
+ 通過另一個字符串創建
string基本操作
+ 拷貝
+ 賦值
+ 連接
+ 比較
C++string與C語言string.h
string 其他函數操作
以上就是關于“C++與C語言的區別是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。