傳陣列到function

傳陣列到function的時候,function本身是不知道傳進來的Array

大小,所以要給下限值,因此當我們把Array傳進來時又要使用到

memset或是memcpy變成要注意我們要的個數。

其中memset:
The function stores (unsigned char)c in each of the elements of the array of unsigned char beginning at s, with size n. It returns s. 是用unsigned char 所以只有一個byte
一個byte去替換。

舉個例子:
把一個陣列或是記憶體空間全部清成0時,用memset來完成。
但這函式其實是先把數值轉成二進位再以bit的方式一一填入記憶體空間,
剛好0轉成二進位還是一堆0但是整數1其實就是轉成00000001在填入記憶體。
假設今天有個int test [2]的陣列要填入1的話,即memset(test,1,sizeof(test)),
而一個整數為4個byte就會發生以下這樣的事情
test[0] = 00000001 00000001 00000001 00000001 = 16843009(十進位)
test[1] = 00000001 00000001 00000001 00000001 = 16843009(十進位)
除了0填了還是0之外,還有⋯⋯-1可以使用,也就是填完之後還是-1

memcpy則要注意的是其原型
void * memcpy ( void * destination, const void * source, size_t num );

參數:
destination
Pointer to the destination array where the content is to be copied,
type-casted to a pointer of type void*.
source
Pointer to the source of data to be copied, type-casted to a pointer of type void*.
num
Number of bytes to copy.

留言