今天在編寫levenshtein distance距離函式時用到二維陣列,用memset對其初始化時發生了問題,直接**:
int** m = null;
int i = 0,j = 0;
m = (int**)malloc(row * sizeof(int));
for (i = 0;i < row; i++)
memset(m,0,row*col*4);
for(i = 0; i < row; i++)
printf("\n");
}
1.memeset函式只能對連續的記憶體空間初始化。兩次用malloc函式在堆上分的記憶體可能會不連續,因此錯誤。
2. 如果是直接宣告的多維陣列如a[5][5],其記憶體肯定是連續的,此時統一memset沒問題。
具體修改如下:
for (i = 0;i < row; i++)
使用memset 函式初始化二維陣列時的注意事項
注意事項 使用memset 函式初始化二維陣列時要千萬小心 1.二維整型陣列利用memset 函式初始化時,只能初始化為0或者 1,否則二維整型陣列的值將為隨機數。2.二維char陣列利用memset 函式初始化時不受限制,可初始化為任意字元。演算法 include using namespace ...
C 函式與二維陣列
int data 3 4 定義了乙個三行四列的陣列 這個二維陣列可以解釋為 有3個指向陣列的指標,每個指標指向乙個 陣列,每個陣列包含 4 個int 元素.假如此時有乙個sum 函式,作用是計算這個二維陣列的和 那麼呼叫sum函式時,應為 sum data int size 那麼 sum函式的原型是...
二維陣列與二維指標
1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...