溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言內存操作函數有哪些

發布時間:2021-10-19 11:46:15 來源:億速云 閱讀:174 作者:iii 欄目:開發技術

本篇內容主要講解“C語言內存操作函數有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言內存操作函數有哪些”吧!

頭文件:#include<memory.h>

1.memcpy

作用:內存拷貝

函數原型:

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

使用:

使用格式:memcpy(目的地,原,想操作內存大?。▎挝蛔止潱?

C語言內存操作函數有哪些

把 "參數2" 起始的 "參數3" 個字節 內容拷貝到 "參數1 '

memecpy函數類似于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));//把aa數組中4*4(每個int類型是4字節)內容拷貝到bb數組
	for (int i = 0; i < 10; i++) //打印bb數組全部數據
	{
		printf("%d ", bb[i]);
	}	
}

最后bb字符串中前4*4個字節的內容被改為aa的內容

C語言內存操作函數有哪些

注意 :memcpy不能拷貝重疊內存。

#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]);
	}
}

輸出:

C語言內存操作函數有哪些

拷貝重疊內存會出現這樣的問題。

2.memmove

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

原型:

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

使用與memcpy一樣,只是memmove可以拷貝重疊內存

#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]);
	}
}

出:

C語言內存操作函數有哪些

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

3.memcmp

作用:內存比較

函數原型:

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

使用:

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

C語言內存操作函數有哪些

逐字節比較內存大小,

逐字節一對一對比較??!

返回值有三種情況:

<0 “參數1” 與 “參數2” 逐字節比較時遇到的第一對不同的內存時 “參數1” 中數據 < “參數2”。

=0 “參數1” 與 “參數2” 中的前“ 參數” 三個字節的內容完全相等。

>0 “參數1” 與 “參數2” 逐字節比較時遇到的第一對不同的內存時 “參數1” 中數據 > “參數2”。

4.memset

作用:內存設置

函數原型:

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

使用:

使用格式:memset(地址,一個數,設置多少字節)

例:

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

結果:

C語言內存操作函數有哪些

到此,相信大家對“C語言內存操作函數有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女