/*-----------------------------------------
mems.c -- 使用 memcpy() 和 memmove()
-----------------------------------------*/ #include <stdio.h>
#include <string.h>
#include <stdlib.h> #define SIZE 10 void show_array(const int ar[], int n); int main()
{
int values[SIZE] = {, , , , , , , , , };
int target[SIZE];
double curious[SIZE / ] = {2.0, 2.0e5, 2.0e10, 2.0e20, 2.0e30}; puts("memcpy() used:");
fputs("values (original data):\n", stdout); //等同于 puts("values (original data):");
show_array(values, SIZE);
memcpy(target, values, SIZE * sizeof(int));
puts("target (copy of values):");
show_array(target, SIZE); puts("\nUsing memmove() with overlapping ranges:");
memmove(values + , values, (SIZE / ) * sizeof(int));
puts("values -- elements 0-4 copied to 2-6:");
show_array(values, SIZE); puts("\nUsing memcpy() to copy double to int:");
memcpy(target, curious, (SIZE / ) * sizeof(double));
puts("target -- 5 double into 10 int positions:");
show_array(target, SIZE / );
show_array(target + , SIZE / ); return ;
} void show_array(const int ar[], int n)
{
for (int index = ; index != n; ++index)
printf("%d ", ar[index]); fputc('\n', stdout);
}

mems.c

程序最后一次调用 memcpy() 从 double 类型数组中把数据拷贝到 int 类型数组中,演示了 memcpy() 函数不关心数据的类型,它只负责从一个位置把一些字节拷贝到另一个位置。而且,拷贝过程中也不会进行类型转换。如果用循环对数组中的每个元素赋值,double 类型的值会在赋值过程被转换为 int 类型的值。这种情况下,按原样拷贝字节,然后程序将这些位组合解释成 int 类型。

最新文章

  1. C# 6.0 Feature list
  2. js一些小题(二)
  3. plsql中文乱码问题(显示问号)
  4. Swift 可选类型-备
  5. Mysql开发技巧之删除重复数据
  6. java--jsp+ssh+select动态结合数据和选择(解)
  7. Cocos2d-x 集成openinstall(Android)
  8. [CVPR2018] Context-aware Deep Feature Compression for High-speed Visual Tracking
  9. Docke--Dockerfile指令介绍
  10. 推荐学习git
  11. scrapy基本使用
  12. java 代理模式(静态代理、动态代理、Cglib代理) 转载
  13. 【Mac AndroidStudio】download gradle fail问题
  14. Unity3D导入3DMax模型缩放单位问题深入分析
  15. 第三部分 OpenStack镜像管理
  16. 20155322 2016-2017-2 《Java程序设计》第9周学习总结
  17. ViewController 视图控制器的常用方法
  18. RPC通信
  19. 借助curl理解$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;] ,$_POST, php://input
  20. docker(5)常用命令

热门文章

  1. 从零开始学 Web 之 JS 高级(二)原型链,原型的继承
  2. Consul常用命令
  3. Java并发编程笔记之LinkedBlockingQueue源码探究
  4. leetcode — add-two-numbers
  5. 程序员进阶之算法练习:LeetCode专场
  6. Kafka的Log存储解析
  7. js实现全选/全不选、反选
  8. Ubuntu安装设置nginx和nohup常用操作
  9. Nginx实战-后端应用健康检查
  10. JavaWeb学习 (十一)————Session