STRCPY,MEMSET,MEMCPY三者的區別

2021-06-27 01:20:43 字數 2307 閱讀 7625

memset

用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為『 '或『/0';例:char a[100];memset(a, '/0', sizeof(a)); 

memcpy

用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),會造成b的記憶體位址溢位。 

strcpy

就只能拷貝字串了,它遇到'/0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字串長度(第乙個『/0'之前)是否超過50位,如超過,則會造成b的記憶體位址溢位。

strcpy 

原型:extern char *strcpy(char *dest,char *src); 

用法:#include 

功能:把src所指由null結束的字串複製到dest所指的陣列中。

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

memcpy 

原型:extern void *memcpy(void *dest, void *src, unsigned int count);

用法:#include 

功能:由src所指記憶體區域複製count個位元組到dest所指記憶體區域。

說明:src和dest所指記憶體區域不能重疊,函式返回指向dest的指標。

memset

原型:extern void *memset(void *buffer, char c, int count);

用法:#include 

功能:把buffer所指記憶體區域的前count個位元組設定成字元c。

說明:返回指向buffer的指標。

作用:將s中的字串複製到字元陣列d中。1

2

3

4

5

6

7

8

9

10

11

12

13

// memcpy.c

#include

#include

intmain()

輸出結果:golden global view

作用:將s中第14個字元開始的4個連續字元複製到d中。(從0開始)1

2

3

4

5

6

7

8

9

10

11

12

#include

intmain()

輸出結果: view

作用:複製後覆蓋原有部分資料1

2

3

4

5

6

7

8

9

10

11

#include

#include

intmain(void)

輸出結果:

destination before memcpy:abcdefghijlkmnopqrstuvwxyz0123as6

destination after memcpy: ******************************as6

C 陣列 ArrayList List三者的區別

在c 中,arraylist,list都能夠儲存一組物件,那麼這三者到底有什麼樣的區別呢。陣列在c 中是最早出現的。它在記憶體中是連續的儲存的,所以索引速度很快,而且賦值與修改元素也很簡單。可以利用偏移位址訪問元素,時間複雜度為o 1 可以用折半查詢法查詢元素,效率高。string s new st...

windowonload三者載入方法的區別

window.onload document ready function window load function 的區別吧!首先比較下window.onload與 document ready function 1.執行時間 window.onload必須等到頁面內包括的所有元素載入完畢後才能執...

string Empty和null三者的區別

這是乙個及其常見的問題,網上已經有關於這個問題的很多討論。但是我覺得都是不求甚解,有一些還是在誤導別人。下面我來說下我對這三者的理解,如有錯誤的地方請大家及時指正。一 與string.empty我認為是一樣的。網上有一篇被 了幾十遍的文章是這樣說的string.empty 不分配儲存空間,分配乙個長...