C++之数组处理相关函数(memcpy/memset等)

头文件:string.h

void *memcpy(void *dest, const void *src, size_t n);
  功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

void *memset(void *s, int ch, size_t n);
  功能:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
  memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法

#include<iostream>
#include<string.h>
using namespace std;

int main(){
    int array_a[12] = {23,45,6,7,4776,834,99954};
    int array_b[12];

    memset(array_b, -1, sizeof(array_a)); //将数组b的各元素初始化为-1

    memcpy(array_b, array_a+1, sizeof(int)*6);
    for(int i=0;i<12;i++){
        printf("%d ", array_b[i]);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/johnnyzen/p/9068296.html

时间: 2024-10-28 15:25:18

C++之数组处理相关函数(memcpy/memset等)的相关文章

[VC]strcpy memcpy memset区别与简介

strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字符串复制到dest所指的数组中. 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串.       返回指向dest的指针.memcpy 原型:extern void *memcpy(void *dest, void *src, unsigned int count);

strcpy, memcpy, memset函数

一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串. 返回指向dest的指针. 实现代码: char * strcpy(char * strDest,c

strcpy,memcpy,memset函数实现

strcpy 实现,只能拷贝字符串 char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && (source != NULL)); while((*des++ = *source++)!='\0'); return r; } memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换 void *myMemCopy(void *dest,const void *src,siz

入职培训笔记记录--day9(1、指针函数与函数指针、函数指针数组 2、malloc memset 3、递归函数 4、结构体 5、共用体---》大小端 6、枚举)

1.指针函数与函数指针.函数指针数组 指针函数:返回值为指针的函数 char *fun() { char str[] = "hello world"; return str; } int main() { char *p = fun(); puts(p); return 0; } 编译时,会出现警告,返回了一个已经被释放掉的内存空间的首地址解决方法:1.static 2.char *str = "hello world"; 3.malloc 注意:使用完后要free

memcpy, memset代码改写的方式

WORD wTemp = 0; memcpy((WORD *)&wTemp, ptPort+1, sizeof(WORD)); //if (STD_WORD_ALL == *(WORD *)(pucTpMsk+1)) if (STD_WORD_ALL == wTemp) {    //*(WORD *)(pucTpMsk+11) = 0;    memset(pucTpMsk+11, 0, sizeof(WORD)); }

内存及字符串操作篇strlen strchar strcmp strcoll strcpy strdup strstr strtok strspn strrchr bcmp bcopy bzero index memccpy memset

bcmp(比较内存内容) 相关函数 bcmp,strcasecmp,strcmp,strcoll,strncmp,strncasecmp 表头文件 #include<string.h> 定义函数 int bcmp ( const void *s1,const void * s2,int n); 函数说明 bcmp()用来比较s1和s2所指的内存区间前n个字节,若参数n为0,则返回0. 返回值 若参数s1 和s2 所指的内存内容都完全相同则返回0 值,否则返回非零值. 附加说明 建议使用memc

memset()函数

1. memset()函数原型是extern void *memset(void *buffer, int c, int count)        buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为' '或'/0': 例:char a[100];

一直误解的memset函数

1.“想当然”导致的后果 今天犯了一个十分低级的错误,在对一个整型数组用memset进行初始化设置所有元素值为1.可是结果却大出所料,很意外啊!接着,我就做了代码测试. #include <iostream> using namespace std; int array1[10001]; int array2[10]; int array3[10]; int main() { memset(array1, -1, 10); memset(array2, 0, 10); memset(array

动态数组模板类

本文需要说明的是一种动态数组模板类(Array),可用于自定义的需要连续空间的容器,能有效得利用分配的空间,提供较高效的数组对象操作,和使用引用计数减少内存复制拷贝. Array与std::vector或std::array不同.Array存储连续的对象,并且在对象内存前开辟一份数组 描述块对数组进行描述.Array存储的数据数量是动态的,可以通过setLength调整,同时可以使用+. +=运算符向数组中追加数据.多个数组实例允许使用同一份数据内容,并且不会重复创建内容,这是该数 组类最重要的