memset、memcpy和strcpy的區別

聽到AJ 在給新初一上課,居然說了我不懂的東東
說真的,小編真的很少看到memset 外的那兩個在代碼中出現


memset

常見的清空函數,可以將數組全部變爲一個值,但必須是16 進制下的數:3F3F3F3F3F3F3F ,換成10 進制就是
17802464409370431
用法:

int x[13][14];
memset(x,0,sizeof(x));

這裏安利一下另一個可以作爲清空函數的東西

fill

這個函數跟memset 差不多,但可以任意填10 進制的值,但對比memset ,它無法清空二維數組
用法:

int x[520];
fill(x+1,x+1+len(x的長度),233(你想要填的值));

memcpy

顧名思義,cpycopy 的意思,它可以將任意類型的數組直接複製到另一個數組中,但範圍不能重疊
且是直接複製內存,它會將數組所有的東西都扔進你指定的數組

int a[100],b[50];
memcpy(b, a, sizeof(b));

注意,這裏不能用sizeof(a) ,因爲a 的長度大於b 的,所以會導致b 內存溢出


strcpy

顧名思義,strcpy 是針對字符類型的複製函數,其他的跟memcpy 基本一樣,但它並不是將所有都扔到指定數組,它只複製在第一個/0 之前的東西

char a[100],b[50];
strcpy(a,b);

當然也要注意複製的東西需要小於等於指定數組的範圍,不然內存也會溢出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章