亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深度解析三個常見的C語言內(nèi)存函數(shù)

 更新時間:2023年07月28日 09:07:29   作者:GOTXX  
這篇文章主要深度解析了三個常見的C語言內(nèi)存函數(shù)memcpy,memmove,memcmp,所以本文將對memcpy,memmove,memcmp 三個函數(shù)進行詳解和模擬實現(xiàn),需要的朋友可以參考下

1.memcpy函數(shù)(內(nèi)存拷貝函數(shù))

函數(shù)介紹 

1.memcpy函數(shù)的作用:從source的位置開始向后復制num個字節(jié)的數(shù)據(jù)到destination的內(nèi)存位置。 可以拷貝字符數(shù)組,整型數(shù)組,結構體等等,所以參數(shù)是void* 的指針;

2.這個函數(shù)在遇到 '\0' 的時候并不會停下來。(注意)

3.memcpy函數(shù)的局限:如果source和destination有任何的重疊,復制的結果都是未定義的。memcpy函數(shù)拷貝不重疊的內(nèi)存的拷貝。

4.拷貝結束,返回目標空間的起始地址。

使用舉例:

memcpy的模擬實現(xiàn):

void* memcpy(void* dst, const void* src, size_t count)
{
	void* ret = dst;
	assert(dst);
	assert(src);
	while (count--) 
    {
		*(char*)dst = *(char*)src;
		dst = (char*)dst + 1;
		src = (char*)src + 1;
	}
	return(ret);
}

就是將源內(nèi)容一個一個字節(jié)的拷貝到目標空間去,所以強制類型轉換成char*;

2.memmove函數(shù)(內(nèi)存移動函數(shù))

函數(shù)介紹 

memcpy和memmove函數(shù)的用法一樣;作用有所差別;

1.memmove函數(shù)不僅可以拷貝不重疊的內(nèi)存,而且可以拷貝重疊的內(nèi)存。

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

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

memmove的使用示例

當memmove函數(shù)用來拷貝重疊內(nèi)存

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

void* memmove(void* dst, const void* src, size_t count)
{
	void* ret = dst;
	if (dst <= src || (char*)dst >= ((char*)src + count))
	{
		while (count--)
		{
			*(char*)dst = *(char*)src;
			dst = (char*)dst + 1;
			src = (char*)src + 1;
		}
	}
	else 
	{
		dst = (char*)dst + count - 1;
		src = (char*)src + count - 1;
		while (count--) 
		{
			*(char*)dst = *(char*)src;
			dst = (char*)dst - 1;
			src = (char*)src - 1;
		}
	}
	return(ret);
}

解析:

例如

將arr[]={1,2,3,4,5,6,7,8,9,10}中的1 2 3 4 5 放到3 4 5 6 7的位置上去,如果我們還是用前面memcpy的思想

第一步:把1放到3上去,變?yōu)? 2 1 4 5 6 7 8 9 10

第二步:把2放到4上去,變?yōu)? 2 1 2 5 6 7 8 9 10

第三步:我們需要將3放到5上去,但是,第一步我們已經(jīng)將3改變了,所以這種思想不行;

memmove模擬實現(xiàn)思想:

3.memcmp函數(shù)(內(nèi)存比較函數(shù))

函數(shù)介紹

比較從ptr1和ptr2指針開始的num個字節(jié)

返回值如下:

使用示例代碼:

int main()
{
	char buffer1[] = "DWgaOtP12df0";
	char buffer2[] = "DWGAOTP12DF0";
	int n;
	n = memcmp(buffer1, buffer2, sizeof(buffer1));
	if (n > 0)
	{
		printf("'%s' is greater than '%s'.\n", buffer1, buffer2);
	}
	else if (n < 0)
	{
		printf("'%s' is less than '%s'.\n", buffer1, buffer2);
	}
	else
	{
		printf("'%s' is the same as '%s'.\n", buffer1, buffer2);
	}
	return 0;
}

運行結果:

到此這篇關于深度解析三個常見的C語言內(nèi)存函數(shù)的文章就介紹到這了,更多相關C語言內(nèi)存函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言數(shù)據(jù)結構實現(xiàn)字符串分割的實例

    C語言數(shù)據(jù)結構實現(xiàn)字符串分割的實例

    這篇文章主要介紹了C語言數(shù)據(jù)結構實現(xiàn)字符串分割的實例的相關資料,希望通過本文能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • C語言詳細分析講解多文件的程序設計

    C語言詳細分析講解多文件的程序設計

    所謂的C語言多文件編程就是,將代碼實現(xiàn)模塊化。比如說一個項目的一項功能放在一個一個文件里,然后將實現(xiàn)這個功能的函數(shù)放在一個c文件<BR>
    2022-04-04
  • C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決

    這篇文章主要介紹了C語言執(zhí)行時,程序控制臺輸出窗口 一閃而過問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C/C++中宏定義(#define)

    C/C++中宏定義(#define)

    #define命令是C語言中的一個宏定義命令,它用來將一個標識符定義為一個字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。接下拉通過本文給大家分享C/C++中宏定義(#define)知識,需要的朋友參考下
    2017-02-02
  • 基于C語言sprintf函數(shù)的深入理解

    基于C語言sprintf函數(shù)的深入理解

    本篇文章是對C語言中的sprintf函數(shù)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)進程間通信(IPC)的終極指南

    C++實現(xiàn)進程間通信(IPC)的終極指南

    進程間通信(IPC,Inter-Process Communication),指至少兩個進程或線程間傳送數(shù)據(jù)或信號的一些技術或方法,下面小編來和大家深入介紹一下C++實現(xiàn)進程間通信(IPC)的相關方法吧
    2025-04-04
  • 簡要對比C語言中三個用于退出進程的函數(shù)

    簡要對比C語言中三個用于退出進程的函數(shù)

    這篇文章主要介紹了C語言中三個用于退出進程的函數(shù)的對比,分別為_exit()函數(shù)和on_exit()函數(shù)以及atexit()函數(shù),需要的朋友可以參考下
    2015-08-08
  • 使用Objective-C獲取IPHONE手機IMSI序列號

    使用Objective-C獲取IPHONE手機IMSI序列號

    這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。
    2015-04-04
  • 淺析C++中的函數(shù)與指針

    淺析C++中的函數(shù)與指針

    這篇文章主要介紹了淺析C++中的函數(shù)與指針,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • ReSharper 的安裝使用詳細教程

    ReSharper 的安裝使用詳細教程

    resharper安裝教程是關于vs2012一個非常好用的插件的安裝教程,建議大家嘗試安裝,今天通過本教程幫助大家學習ReSharper 的安裝使用詳細教程,感興趣的朋友一起看看吧
    2021-06-06

最新評論