c和c++區別(三)
阿新 • • 發佈:2018-11-25
名稱空間(c++)
示例:
fun.h
# include<iostream>
using namespace std;
namespace A
{
typedef int Int;
};
main.cpp
# include<iostream>
# include"fun.h"
using namespace std;
using namespace A;
int main()
{
Int i = 10;
return 0;
}
new、delete(c++)malloc、free(c)
malloc、free的用法
int main() { //申請單個變數 int *p = (int *)malloc(sizeof(int)* 1); assert(p != NULL); *p = 10; free(p); //釋放 p = NULL; //申請一維陣列 int *q = (int *)malloc(sizeof(int)* 10); assert(q != NULL); for (int i = 0; i < 10; i++) { q[i] = i; } free(q); //釋放 q = NULL; //二維陣列5*5 int **t = (int **)malloc(sizeof(int *)* 5); assert(t != NULL); for (int i = 0; i < 5; i++) { t[i] = (int *)malloc(sizeof(int)* 5); assert(t[i] != NULL); } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { t[i][j] = i; } } for (int i = 0; i < 5; i++)//釋放 { free(t[i]); t[i] = NULL; } return 0; }
new、delete用法
//申請單個變數 int *p = new int;//不初始化 *p = 10; delete p;//釋放 int *q = new int(10); //初始化 delete q; //申請一維陣列 int *t = new int[10]; delete[]t;//釋放 //申請二維陣列 int **x = new int*[5]; for (int i = 0; i < 5; i++) { x[i] = new int[5]; } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { x[i][j] = i; } } for (int i = 0; i < 5; i++)//釋放 { delete[]x[i]; } delete[]x;
c++中的哪些功能代替了c語言中的巨集
- 行內函數:在編譯期展開,可以除錯,有型別檢查
- 巨集函式:預編譯期在呼叫點展開,不可以除錯,沒有型別檢查
- const:在編譯期使用該變數值進行替換
- 巨集變數:預編譯期進行字元替換,沒有型別檢查,不可除錯