memset和memcopy的用法

2021-10-02 05:32:15 字數 809 閱讀 7950

1、memset()函式

作用:為新申請的記憶體進行初始化。mem是memory的含義,即記憶體。

尤其適用於陣列和結構體等占用記憶體較大的變數。(尤其是結構體中資料型別多,單個成員分別初始化較為麻煩)

函式原型:

# include

void *memset(void *s, int c, unsigned long n);

將s指向的前n個位元組的記憶體單元用乙個整數c代替。

例1:初始化陣列:

char str[5];

memset(str,0,sizeof(str));

例2:初始化結構體:

typedef structio;

io test;

memset(&test,0,sizeof(test));

2、memcpy()函式:

#include

void *memcpy(void *dest, const void *src, size_t n);

將src指向的n個位元組拷貝到dest所指向的記憶體位址。

例如:

int a=2;

int b;

memcpy(&b,&a,sizeof(a));

3、memcpy()與strcpy()的區別:

strcpy顧名思義:只能複製字串,並且不需要指定長度,直到遇到複製字串結束符'\0'才結束,故容易溢位。

memcpy:複製範圍廣,不僅可以複製字串,而且可以複製整型,結構體 等任意型別。

memcopy和memmove的區別

memcopy和memmove函式在linux下看了一下兩個函式的原始碼。兩個函式都在標頭檔案string.h中定義,函式原型為 void cdecl memcpy void dst,const void src,size t count void cdecl memmove void dst,co...

memcopy和memmove的區別(筆試,面試)

memcopy和memmove函式在linux下看了一下兩個函式的原始碼。兩個函式都在標頭檔案string.h中定義,函式原型為 void cdecl memcpy void dst,const void src,size t count void cdecl memmove void dst,co...

memmove 與memcopy 的區別

顧名思義,重疊就是有重複的部分。在字串拷貝的過程中,還沒被拷貝就已經被覆蓋了原來的值。記憶體重疊在拷貝的過程中指源指標開始的記憶體與目的指標指的記憶體有重疊。我們可以在同乙個陣列中模擬記憶體重疊的現象。記憶體重疊只有在目的位址為pos1 pos2的時候才會存在。其中目的位址起始位址為pos1的情況下...