Chinaunix首页 | 论坛 | 博客
  • 博客访问: 955355
  • 博文数量: 116
  • 博客积分: 3923
  • 博客等级: 中校
  • 技术积分: 1337
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-23 01:22
文章分类

全部博文(116)

文章存档

2013年(1)

2012年(17)

2011年(69)

2009年(29)

分类: LINUX

2012-02-04 18:00:30

  1. /* file: main.c */
  2. #include <stdio.h>
  3. #include <stdlib.h>

  4. #define __assert(x)

  5. static void * __memmove (void * dest, const void *src, size_t len)
  6. {
  7.     __assert(dest&&src);
  8.     unsigned char* dest_p = (unsigned char*)dest;
  9.     const unsigned char* src_p = (const unsigned char*)src;
  10.     if (dest_p == src) return dest_p;
  11.     if (dest_p < src_p)
  12.         while (len--) *dest_p++ = *src_p++; /* copy from header */
  13.     else
  14.         while (len--) *(dest_p+len)=*(src_p+len); /* copy from tailer */
  15.     return dest_p;
  16. }

  17. #define COUNT 5

  18. int main(void)
  19. {
  20.     char* pnew;
  21.     int* array;
  22.     int i = 0;
  23.     array = (int*)malloc(sizeof(int)*COUNT);
  24.     __assert(array);
  25.     memset(array, 0, sizeof(int)*COUNT);
  26.     while (i < COUNT) {
  27.         array[i] = i;
  28.         i++;
  29.     }
  30.     for (i=0; i < COUNT; i++)
  31.         printf("%d ", array[i]);
  32.     printf("\n");
  33.     
  34.     __memmove(array+2, array, sizeof(int)*3);
  35.     for(i=0; i<COUNT; i++){
  36.         printf("%d\n",array[i]);
  37.     }
  38.     free (array);
  39. }
阅读(1352) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~