内存操作函数

#define CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

 

int main0101()

{

//堆空间重置:memset()重置内存空间的值;memset依靠二进制进行初始化,如int为4个字节,memset把每个字节都赋值

//0000 0000 0000 0000:0      1111 1111 1111 1111:-1

  int*p=(int*)malloc(sizeof(int)*10);

//只能重置0或-1

  memset(p,0,sizeof(int)*10);  

  memset(p,-1,sizeof(int)*10);

  for(int i=0;i<10;i++)

  {

    printf("%d\n",p[i]);

  }

  free(p);

  return EXIT_SUCCESS;

}

int main0102(void)

{

//memcpy()内存拷贝:拷贝的内容和字节有关

  int arr[]={1,2,3,4,5,6,7,8,9,10};

  int*p=(int*)malloc(sizeof(int)*10);

  memcpy(p,arr,sizeof(int)*10);

  for(i=0;i<10;i++)

  {

    printf("%d\n",p[i]);

  }

  free(p);

 

//strcpy()字符串拷贝:遇\0停止

  char ch[]="hello\0 world";  

  char str[100];

  strcpy(str,ch);

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

 

//如果拷贝的源和目标发生重叠,可能会报错

  int arr[]={1,2,3,4,5,6,7,8,9,10};

  memcpy(&arr[5],&arr[3],20);

  for(int i=0;i<10;i++)

  {

    printf("%d ",arr[i]);//1 2 3 4 5 4 5 6 7 8

  }

//memmove()功能用法和memcpy一样,区别在于:dest和src所指的内存空间重叠时,mommove仍然能处理,但是执行效率比memcpy低

  int arr[]={1,2,3,4,5,6,7,8,9,10};

  memcpy(&arr[5],&arr[3],20);

  for(int i=0;i<10;i++);

  {

    printf("%d ",arr[i]);

  }

  return 0;

}

int main(void)

{

//strcmp()只比较\0之前的内容

//momcmp():比较输入的字节里的内容

 

//比较字符数组

  //int arr1[]={1,2,3,4,5,6,7,8,9,10};

  //int arr2[]={1,2,3,4,5,6};

//比较字符串

  char arr1[] = "hello\0 warld";

  char arr1[] = "hello\0 world";

 

  int value=memcmp(arr1,arr2,13);

  printf("%d\n",value);

  return 0;

}

posted @ 2020-09-11 14:07  wh19991213  阅读(108)  评论(0编辑  收藏  举报