欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:開發(fā)語言 C語言——內(nèi)存函數(shù)

柚子快報(bào)激活碼778899分享:開發(fā)語言 C語言——內(nèi)存函數(shù)

http://yzkb.51969.com/

1. memcpy 函數(shù)

1.1 函數(shù)的格式

void

*

memcpy

(

void

* destination,

const void

* source,

size_t

num );

?

函數(shù) memcpy 從

source

的位置開始向后復(fù)制

num

個(gè)字節(jié)的數(shù)據(jù)到

destination

指向的內(nèi)存位置。

?

這個(gè)函數(shù)在遇到

'\0'

的時(shí)候并不會(huì)停下來。

?

如果

source

destination

有任何的重疊,復(fù)制的結(jié)果都是未定義的。

對(duì)于重疊的內(nèi)存,交給函數(shù)?memmove?

來處理。

?

1.2 函數(shù)的使用

代碼如下:

#include

#include

int main()

{

int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };

int arr2[20] = { 0 };

memcpy(arr2, arr1,5 * sizeof(int));

int i = 0;

for (i = 0; i < 10; i++)

{

printf("%d ", arr2[i]);

}

return 0;

}

運(yùn)行結(jié)果如下:

1.3 函數(shù)的模擬實(shí)現(xiàn)

代碼如下:

#include

#include

#include

void* my_memcpy(void* dst, const void* src, size_t count)

{

void* ret = dst;

assert(dst&&src);

while (count--) {

*(char*)dst = *(char*)src;

dst = (char*)dst + 1;

src = (char*)src + 1;

}

return(ret);

}

int main()

{

int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };

int arr2[20] = { 0 };

my_memcpy(arr2, arr1,5 * sizeof(int));

int i = 0;

for (i = 0; i < 10; i++)

{

printf("%d ", arr2[i]);

}

return 0;

}

運(yùn)行結(jié)果如下:

2.?memmove函數(shù)

2.1 函數(shù)的格式

void

*

memmove

(

void

* destination,

const void

* source,

size_t

num );

?

和 memcpy 的差別就是 memmove 函數(shù)處理的源內(nèi)存塊和目標(biāo)內(nèi)存塊是可以重疊的。

?

?

如果源空間和目標(biāo)空間出現(xiàn)重疊,就得使用 memmove 函數(shù)處理。

2.2 函數(shù)的使用

代碼如下:

#include

#include

int main()

{

int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };

memmove(arr1 + 2, arr1, 20);

int i = 0;

for (i = 0; i < 10; i++)

{

printf("%d ", arr1[i]);

}

return 0;

}

運(yùn)行結(jié)果如下:

2.3 函數(shù)的模擬實(shí)現(xiàn)

代碼如下:

#include

#include

void* my_memmove(void* dst, const void* src, size_t count)

{

void* ret = dst;

//前 -> 后

if (dst < src )

{

while (count--)

{

*(char*)dst = *(char*)src;

dst = (char*)dst + 1;

src = (char*)src + 1;

}

}

//后 -> 前 //(dest > src) || ((char *)dst >= ((char *)src + count))

else {

while (count--) {

*((char*)dst + count) = *((char*)src + count);

}

}

return ret ;

}

int main()

{

int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };

my_memmove(arr1 + 2, arr1, 20);

int i = 0;

for (i = 0; i < 10; i++)

{

printf("%d ", arr1[i]);

}

return 0;

}

運(yùn)行結(jié)果如下:

3. memset 函數(shù)

3.1 函數(shù)的格式

void

*

memset

(

void

* ptr,

int

value,

size_t

num );

memset 是用來設(shè)置內(nèi)存的,將內(nèi)存中的值以字節(jié)為單位設(shè)置成想要的內(nèi)容。

?

3.2 函數(shù)的使用

代碼如下:

#include

#include

int main()

{

char str[] = "hello world";

memset(str, '*', 6);

printf(str);

return 0;

}

運(yùn)行結(jié)果如下:

4. memcmp 函數(shù)

4.1 函數(shù)的格式

int

memcmp

(

const void

* ptr1,

const void

* ptr2,

size_t

num );

?

比較從

ptr1

?和

ptr2

指針指向的位置開始,向后的

num

個(gè)字節(jié)

?

返回值如下:

4.2 函數(shù)的使用

代碼如下:

#include

#include

int main()

{

int arr1[] = { 1,2,3,4,5,6,7 };

int arr2[] = { 1,2,3,4,5,6,8 };

int ret = memcmp(arr1, arr2, 6 * sizeof(int) + 1);

printf("%d\n", ret);

return 0;

}

運(yùn)行結(jié)果如下:

本文為作者學(xué)習(xí)C語言內(nèi)存函數(shù)后的思考與總結(jié),如果有什么不恰當(dāng)?shù)牡胤?,歡迎各位大佬指正!!

柚子快報(bào)激活碼778899分享:開發(fā)語言 C語言——內(nèi)存函數(shù)

http://yzkb.51969.com/

好文鏈接

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19291686.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄