memset函式與二維陣列初始化的問題

2021-07-10 10:07:14 字數 525 閱讀 6716

今天在編寫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 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...