C语言指针4-内存的灵活操作
来源:互联网 发布:linux echo用法 编辑:程序博客网 时间:2024/05/01 10:31
使用指针操作内存是非常灵活的。
(1)我们定义的任何一个类型的任何一个变量,在程序运行时都占用一定的内存空间。
(2)指针的sizeof大小都是4字节(32位),可以指向任何内存空间,可以做任何类型的强制转换。
(3)当我们定义的指针不知是何类型时,可以使用void *(其实任何类型都可以),如malloc的返回值(void *)。
(4)内存操作一般使用memcpy函数。与strcpy不同在于:memcpy不会遇到0结束,一定会拷贝n个字节的数据。0即'/0'。
(5)内存初始化一般使用memset(ptr, 0, sizeof(struct x));
假如我们有变量char str[128]和struct point{double x,y,z;} p;
将p的数据写入str内存中,我们可以:memcpy(str, &p, sizeof(struct point));
如果str中存储的是struct point结构数据,取用str中的数据,我们可以:memcpy(&p2, str, sizeof(struct point));
也可以:p2=(struct point *)str;
基本类型的变量同样可以,例如int x=234;
我们可以将x存储到str中:memcpy(str, &x, sizeof(int));
将x存储到p中:memcpy(&p, &x, sizeof(int));
如果写到str的第5个字节开始处,我们可以:memcpy(str+4, &x, sizeof(int));因为str为char类型,+4相当于移动4*sizeof(char)个字节。
取用这个int值,我们可以:int *y=(int *)&p;当然也可以memcpy(&y, &p, sizeof(int)),但是int y=(int)p是不行的。
注意:memcpy中目标内存要足够大,以便存储要复制的数据,否则内存错误。
- C语言指针4-内存的灵活操作
- C语言指针的操作
- C语言有关内存分配函数、内存操作函数和函数指针的总结
- C语言指针操作
- C语言指针操作
- c语言指针操作
- C语言-指针操作
- C语言指针的指针传递内存的理解
- 关于C语言指针的不安全操作
- C语言-内存操作
- C语言指针内存类错题
- C语言指针 字符串 内存
- C语言的内存与地址(C和指针)
- 更灵活的方式解决C语言开发中的时间操作问题
- C语言指针开辟内存释放内存
- C语言 指针操作练习
- C语言中的指针操作
- C语言入门指针操作
- Swing JTable 表格排序jdk1.5于1.6
- 无语了
- 全手工制作arm-linux交叉编译工具链《二》
- 如何更改摄像机的服务器端口
- 远程登录不了网络摄像机是什么原因?
- C语言指针4-内存的灵活操作
- Windows消息编程
- HDU1251字典树
- Base
- CAD数据库 创建简单的对象
- 全手工制作arm-linux交叉编译工具链《一》
- wxLua 扩展
- 自己制作arm-linux交叉编译环境(一)
- 自己制作arm-linux交叉编译环境(二)-crosstool篇