最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼

 更新時間:2025年02月05日 09:12:32   作者:愛學(xué)習(xí)的徐徐  
本文主要介紹了C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼,包括memcpy、memmove、memset和memcmp的使用,具有一定的參考價值,感興趣的可以了解一下

一、前言

在C語言中有著常見的內(nèi)存函數(shù),他們可以對內(nèi)存進行操作,即可以修改內(nèi)存的內(nèi)容等,下面我們來簡略地學(xué)習(xí)一下

二、memcpy(內(nèi)存復(fù)制)

cpy是復(fù)制的意思,顧名思義,就是將一塊指定大小的內(nèi)存的字節(jié)逐一賦值到新的內(nèi)存塊上,下面是memcpy的定義

void * memcpy ( void * destination, const void * source, 1 size_t num );

下面我們可以舉一個簡單的使用案例

#include <stdio.h>
#include <string.h>

int main() {
	int arr1[10] = { 0,1,2,3,4,5,6,7,8,9 };
	int arr2[10];
	
	memcpy(arr2, arr1, sizeof(arr1));

	for (int i = 0; i < 10; i++) {
		printf("%d ", arr2[i]);
	}
	printf("\n");

	return 0;
}

在這里插入圖片描述

可以看到,這里我將arr1數(shù)組的內(nèi)存數(shù)據(jù)復(fù)制到了arr2數(shù)組中

memcpy使用細節(jié):

  • 目標空間大小不能小于要拷貝的內(nèi)存的大小
  • memcpy不會因為遇到’\0’而停止
  • memcpy目標內(nèi)存不能是拷貝的內(nèi)存,不然復(fù)制的結(jié)果是不可預(yù)知的,也就是說內(nèi)存不能重疊,如:memcpy(arr, arr, …)

三、 memmove(內(nèi)存移動)

memmove的功能與memcpy的功能可以說是一樣的,但是memmove有一個與memcpy不同的點,就是memmove可以操作重疊的內(nèi)存,因為memmove會將要復(fù)制的內(nèi)存的內(nèi)容復(fù)制到臨時緩沖區(qū),然后再復(fù)制帶目標內(nèi)存中

void * memmove ( void * destination, const void * source,size_t num );

下面我們進行演示

#include <stdio.h>
#include <string.h>

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

	memmove(arr2, arr1, sizeof(arr1));
	memmove(arr1 + 1, arr1, sizeof(int) * 9);

	for (int i = 0; i < 10; i++) {
		printf("%d ", arr1[i]);
	}
	printf("\n");

	for (int i = 0; i < 10; i++) {
		printf("%d ", arr2[i]);
	}

	return 0;
}

在這里插入圖片描述

這里我將arr1中的數(shù)據(jù)復(fù)制到了arr2中,然后將arr1的數(shù)據(jù)進行了后移

四、memset(內(nèi)存設(shè)置)

memset的函數(shù)的作用是將指定內(nèi)存大小的內(nèi)存塊中的值設(shè)置為想要的值

void * memset ( void * ptr, int value, size_t num );

下面我們來舉例一些例子

#include <stdio.h>
#include <string.h>

int main() {
	char arr1[] = "HelloWorld!";
	printf("%s\n", arr1);

	memset(arr1, 'X', 5);

	printf("%s\n", arr1);

	return 0;
}

在這里插入圖片描述

這里我使用了memset函數(shù)將Hello替換成了X

五、memcmp(比較指定字節(jié))

memcmp 逐字節(jié)比較兩個內(nèi)存區(qū)域的內(nèi)容,比較的字節(jié)數(shù)由參數(shù) n 指定。比較從兩個內(nèi)存區(qū)域的起始位置開始,依次比較每個字節(jié)的值

返回值

  • 如果兩個內(nèi)存區(qū)域在前 n 字節(jié)內(nèi)完全相同,返回 0。
  • 如果第一個不同的字節(jié)在 s1 中的值小于 s2 中的值,返回 負整數(shù)。
  • 如果第一個不同的字節(jié)在 s1 中的值大于 s2 中的值,返回 正整數(shù)。
int memcmp ( const void * ptr1, const void * ptr2, size_t num );

同樣我們舉例一下案例

#include <stdio.h>
#include <string.h>

int main() {
	char arr1[] = "HelloWorld!";
	char arr2[] = "AelloWorld!";

	if (memcmp(arr1, arr2, sizeof(arr1)) > 0) {
		printf("arr1字符串大!\n");
	}

	return 0;
}

在這里插入圖片描述

這里我使用了字符串比較,但并不代表著只能比較字符串,memcmp也可以比較其他類型的數(shù)組

使用細節(jié)

  • 比較的字節(jié)數(shù): memcmp 只比較指定的 n 字節(jié)。如果兩個內(nèi)存區(qū)域在前 n 字節(jié)內(nèi)相同,即使后面的字節(jié)不同,memcmp 也會返回 0
  • 內(nèi)存區(qū)域的大?。?/strong> 確保兩個內(nèi)存區(qū)域的大小至少為 n 字節(jié),否則可能會導(dǎo)致未定義行為(如訪問越界)
  • 返回值的含義: memcmp 的返回值是一個整數(shù),表示兩個內(nèi)存區(qū)域的比較結(jié)果。返回值的具體值(正數(shù)或負數(shù))取決于第一個不同的字節(jié)的值

六、End

到此這篇關(guān)于C語言實現(xiàn)內(nèi)存函數(shù)的示例代碼的文章就介紹到這了,更多相關(guān)C語言 內(nèi)存函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 初學(xué)C++之自定義類型名簡化詳解

    初學(xué)C++之自定義類型名簡化詳解

    下面小編就為就大家?guī)硪黄鯇W(xué)C++之自定義類型名簡化詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(106.由中序和后序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 零基礎(chǔ)詳解C語言指針進階

    零基礎(chǔ)詳解C語言指針進階

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-02-02
  • C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問題詳解

    C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問題詳解

    c++?vector轉(zhuǎn)數(shù)組是一種將vector容器的元素轉(zhuǎn)換為數(shù)組的方法,主要能幫助提高程序的性能和效率,下面這篇文章主要給大家介紹了關(guān)于C++中vector和數(shù)組之間的轉(zhuǎn)換及其效率問題的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C語言中bool變量的深入理解

    C語言中bool變量的深入理解

    C語言中沒有BOOL類型變量,它是C++獨有的,由于使用BOOL類型可以使代碼更具有可讀性,下面這篇文章主要給大家介紹了關(guān)于C語言中bool變量的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Linux線程同步之信號C語言實例

    Linux線程同步之信號C語言實例

    這篇文章主要介紹了Linux線程同步之信號C語言實例,本文直接給出代碼實例,需要的朋友可以參考下
    2015-04-04
  • c語言實現(xiàn)簡易版三子棋(附完整代碼)

    c語言實現(xiàn)簡易版三子棋(附完整代碼)

    大家好,本篇文章主要講的是c語言實現(xiàn)簡易版三子棋(附完整代碼),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • c++中stack、queue和vector的基本操作示例

    c++中stack、queue和vector的基本操作示例

    這篇文章主要給大家介紹了關(guān)于c++中stack、queue和vector基本操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • VS Code 中安裝運行、編寫C語言程序的詳細教程

    VS Code 中安裝運行、編寫C語言程序的詳細教程

    這篇文章主要介紹了VS Code 中安裝運行、編寫C語言程序的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • c++傳輸文件到不同計算機上的示例代碼

    c++傳輸文件到不同計算機上的示例代碼

    這篇文章主要為大家詳細介紹了c++傳輸文件到不同計算機上的相關(guān)知識,文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03

最新評論

长泰县| 马龙县| 绥中县| 屏东市| 大新县| 隆林| 松溪县| 徐汇区| 曲靖市| 潞城市| 广东省| 炎陵县| 广水市| 鹤峰县| 黄山市| 平罗县| 忻州市| 平顺县| 新乡市| 六安市| 聂荣县| 肃南| 五指山市| 汕尾市| 齐齐哈尔市| 依安县| 广丰县| 临泽县| 拜城县| 旬邑县| 大埔县| 永定县| 大兴区| 修武县| 郸城县| 虹口区| 德昌县| 宁海县| 开平市| 寿阳县| 龙岩市|