欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言內(nèi)存操作函數(shù)詳解

 更新時(shí)間:2021年10月19日 09:02:22   作者:wwhdsg  
這篇文章主要介紹了C語言全部內(nèi)存操作函數(shù)的實(shí)現(xiàn)詳細(xì)講解,作者用圖文代碼實(shí)例講解的很清晰,有感興趣的同學(xué)可以研究下

頭文件:#include<memory.h>

1.memcpy

作用:內(nèi)存拷貝

函數(shù)原型:

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

使用:

使用格式:memcpy(目的地,原,想操作內(nèi)存大?。▎挝蛔止?jié)))

把 "參數(shù)2" 起始的 "參數(shù)3" 個(gè)字節(jié) 內(nèi)容拷貝到 "參數(shù)1 '

memecpy函數(shù)類似于strncpy。

例:

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4 };
	int bb[10] = { 0 };
	memcpy(bb, aa, 4 * sizeof(int));//把a(bǔ)a數(shù)組中4*4(每個(gè)int類型是4字節(jié))內(nèi)容拷貝到bb數(shù)組
	for (int i = 0; i < 10; i++) //打印bb數(shù)組全部數(shù)據(jù)
	{
		printf("%d ", bb[i]);
	}	
}

最后bb字符串中前4*4個(gè)字節(jié)的內(nèi)容被改為aa的內(nèi)容

注意 :memcpy不能拷貝重疊內(nèi)存。

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	my_memcpy(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

輸出:

拷貝重疊內(nèi)存會(huì)出現(xiàn)這樣的問題。

2.memmove

作用:內(nèi)存拷貝(可拷貝重疊內(nèi)存)

原型:

void *memmove( void *dest, const void *src, size_t count );
 

使用與memcpy一樣,只是memmove可以拷貝重疊內(nèi)存

#include <memory.h>
#include <string.h>
#include <stdio.h>
int main()
{
	int aa[] = { 1,2,3,4,5,6,7,8,9,10 };
	memmove(aa + 2, aa, 24);
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", aa[i]);
	}
}

出:

同樣的代碼使用memmove就可以.

3.memcmp

作用:內(nèi)存比較

函數(shù)原型:

int memcmp( const void *buf1, const void *buf2, size_t count );
 

使用:

使用格式:memcmp(地址1,地址2,想要比較的內(nèi)存大小 單位bit)

逐字節(jié)比較內(nèi)存大小,

逐字節(jié)一對(duì)一對(duì)比較!!

返回值有三種情況:

<0 “參數(shù)1” 與 “參數(shù)2” 逐字節(jié)比較時(shí)遇到的第一對(duì)不同的內(nèi)存時(shí) “參數(shù)1” 中數(shù)據(jù) < “參數(shù)2”。

=0 “參數(shù)1” 與 “參數(shù)2” 中的前“ 參數(shù)” 三個(gè)字節(jié)的內(nèi)容完全相等。

>0 “參數(shù)1” 與 “參數(shù)2” 逐字節(jié)比較時(shí)遇到的第一對(duì)不同的內(nèi)存時(shí) “參數(shù)1” 中數(shù)據(jù) > “參數(shù)2”。

4.memset

作用:內(nèi)存設(shè)置

函數(shù)原型:

void *memset( void *dest, int c, size_t count );
 

使用:

使用格式:memset(地址,一個(gè)數(shù),設(shè)置多少字節(jié))

例:

#include <memory.h>
int main()
{
	int a[] = {1,2,3,4,5};
	memset(a, 1, 20);//把從a開始的前二十個(gè)字節(jié)內(nèi)容改成1
}

結(jié)果:

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

最新評(píng)論