1,結構體的使用不同於c語言,如
struct edge;
其中edge可以直接用來宣告結構體型別的物件,此外
struct edgeedge1,edge2,edges[10];
可以直接在結構體定義時宣告物件
2 引用與指標:引用相當於別名,只針對於乙個物件空間,不能被改變,指標是自由的,能被改變。
在c/c++中,不管是全域性變數還是區域性變數,直接做實參時,只能傳值,不能被改變,如果想在函式中改變變數的值,可以對變數進行引用(然而c語言中沒有引用,所以c語言一般靠函式返回值去改變變數)
3 動態陣列:c++中動態申請陣列不需要用malloc,語法麻煩而且還要匯入mallo.h包,可以直接用new去申請,如
int *a=new
int[n];
注意:memset只能初始化連續的空間,而用new分配的空間並不一定連續,所以不能直接sizeof(a),而要用n*sizeof(int)
4 二維陣列與函式:因為編譯原因,c++的二維陣列做函式形參必須要指定第二維的大小,此外,函式不能返回陣列,只能返回指標或者引用。
建議對於二維陣列,最好封裝為結構體或者類,做引數或者返回值。5 new與二維陣列:常用的兩種new建立二位陣列物件的方法:
1. 建立乙個指標陣列
int (*p)[10]=new int[5][10]();
注意new後面帶有「()」表示初始化,預設為0
2. 建立乙個指向指標陣列頭部的指標
int **p=new
int*[5];
int i;
for(i=0;i<5;i++)p[i]=new
int[10]();
1,cstring庫在使用memset函式時必須匯入
2,algorithm庫:
sort(void *a,void *a+n[,cmp]):對陣列從a位置到a+n位置進行排序,其中第三個引數cmp大小比較函式可選,可以返回bool值或者int值。sort函式不支援對二維陣列排序,可以考慮結構體陣列。
swap(int a,int b) : 因為algorithm自帶的函式已經處理,引數在這裡無需加引用
3,string.h庫:
char *strncpy(char *dest, const char *src, int n),把src所指向的字串中以src位址開始的前n個位元組複製到dest所指的陣列中,並返回des;
而strcpy(char * dest, char *src)是以』\0』位終止,如果空間不夠,會overflow
1,堆疊與變數:區域性變數申請在棧空間,一般在2m左右,所以對於int陣列,最大長度只能在520000左右。全域性變數申請在堆空間,最大可以占用整個記憶體(一般也不會),所以空間申請較為靈活。
2,memset與全域性變數:不要用memset對malloc或者new的全域性變數進行初始化(除了全域性陣列外),可能涉及到記憶體未提前分配的問題。
3,指標作為形參:指標能做形參的原因是指標儲存一段實際的物理記憶體,這是客觀存在的,哪怕函式空間對形參重新分配記憶體,但是該記憶體所儲存的物理記憶體位址依然不變,後續進行增減都是直接在指標所對應的物理記憶體上操作,所以能產生影響。如:
int
*p;void add(int
*p)
但是不能再函式中直接對指標進行賦值,如
int
*p,*q;
void change(int
*p)
函式執行完成之後,p指標依然沒有變化,因為該函式不是對p指標所指向的物理記憶體操作,而是對指標本身的值(也就是位址操作),而指標本身的值是有函式外的作用域儲存的,函式內的儲存並不會影響函式外的作用域儲存。
4,空指標的記憶體分配:廢話,空指標當然是沒有記憶體分配的,只是在編譯時候的乙個宣告,執行時程式並不產生任何影響,比如:
int
*p;int
*b=p
int a=3;
b=&a;
此時對於指標p並不產生任何影響,因為指標p只是乙個概念,並沒有物理記憶體,所以空指標絕對不能作為函式形參
1 取模和取餘:x除以y(x/y),取模(程式設計沒有取模函式,對於負數可以再加上y)的餘數與y符號相同,取餘x%y的餘數與x相同。
2 逗號運算子: 用來連線表示式,優先順序最低
PYTHON常用小知識(持續更新)
python判斷檔案和資料夾是否存在 import os os.path.isfile test.txt 如果不存在就返回false os.path.exists directory 如果目錄不存在就返回false python時間的處理 from time import 將time引入進來 fti...
openlayers學習小知識 持續更新
1 限制地圖縮放級別 在view中定義屬性minzoom和maxzoom,可以設定地圖縮放的最小級別和最大級別 2 動態設定地圖的縮放級別 使用map.getview 方法獲取地圖當前的view,view.getzoom獲取當前檢視的縮放級別,view.setzoom設定檢視的縮放級別,map.se...
備用小知識 不斷更新
1.延時函式 nsthread sleepfortimeinterval 3 self performselector selector machineballaction withobject nil afterdelay 0 你一定要在dealloc方法中release這個array,顯然易見,...