【内存操作】

本文介绍了C语言中的memset和memcpy函数,memset用于内存初始化,讲解了大小端模式的概念,并展示了如何使用这两个函数。示例代码演示了指针、地址和内存操作,同时提到了右移运算符及结构体强制类型转换的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

memset函数:内存初始化

memset(指针,值,数组大小),该函数的第一个参数是指针,所以传递的主要参数是地址 

int a=16777220;转换为16进制0x01 00 00 04,则04属于低字节,01属于高字节

大小端模式:

大端模式(Big Endian):数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中

小端模式(Little Endian):数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中

网络传输中一般用大端模式

&:取址运算符

*:取值运算符(间接寻址),还可以用来定义指针变量

#include <iostream>
using namespace std;
int main ()
{
   int  var;
   int  *ptr;
   int  val;
   var = 3000;
   ptr = &var;
   val = *ptr;
   cout << "Value of var :" << var << endl;
   cout << "Value of ptr :" << ptr << endl;
   cout << "Value of val :" << val << endl;
   return 0;
}

结果:

Value of var :3000
Value of ptr :0xbff64494
Value of val :3000

memcpy(void*destin,void*source,unsigned n)

destin——指向用于存储复制内容的目标地址,类型强制转换为void*指针

source——指向要复制的数据源,类型强制转换为void*指针

n ——要被复制的 字节数 

void *memset(void *s, int ch, size_t n);

函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 

作用是在一段内存块中填充某个给定的值,它是对较大的结构体数组进行清零操作的一种最快方法

>>:右移运算符(>>)

按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

> 结构体强制类型转换:

INT8U  *CfData

*LPPUBRAM_FILE_DESCRIBE         /*内存区整体描述结构体*/

pRamHeadDec = (LPPUBRAM_FILE_DESCRIBE)*CfData        (实质是内存块的赋值!!!)

将CfData的内存内容按照LPPUBRAM_FILE_DESCRIBE这个结构体的格式和长度,直接覆盖到pRamHeadDec所占用的内存空间中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值