memset()函数用法

memset用法 & int、long long、float、double 的极值怎么清 memset 是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部(以字节为单位)设置为指定的值。在竞赛中,常用来进行数组的初始化。memset 函数原型定义如下: Copy正因为 memset 函数是以字节为单位赋值的,所以使用它并不能将数组元素修改为任意值,而竞赛中又常常需要将数组初始化为 0、最大值或最小值。写循环赋值的话,也不是不可以,不过显得不那么“优雅”,针对这一点,下面整理了使用 memset 实现数组初始化的一些常用方法。1、memset 可以对 字符数组 进行赋值吗?可以 阅读详情
memset()用于对整型数组或者结构体进行清0或者字符型数组赋初值或某个特定值。而不可以给整型或者double类型数组赋值:
例如
1.对整型数组全体赋某一个值。结果:错误。
  如果是对整型数组清0即memset(a,0,5*sizeof(int));改成那么是正确的。
int main(int argc, char **argv)
{ 
int a[5] ={1,2,3,4,5};
memset(a,1,5*sizeof(int));
for (int i  = 0; i < 5; ++i)
{
cout << a[i] << endl;
}


system("pause");
return 0;
}
这样输出的为16843009 是错误的。
如果代码改成:
2.对字符型数组清0。结果:正确。
int main(int argc, char **argv)
{ 
char a[5] ={'d','d','d','d','d'};
memset(a,'s',5*sizeof(char));
for (int i  = 0; i < 5; ++i)
{
cout << a[i] << endl;
}


system("pause");
return 0;
}
输出结果都为s。是正确结果。
之所以第一种会错是因为memset是以字节为单位进行填充的1的二进制位0001,int型的二进制为:
0000 0000 0000 0000 这样每一次填充后int的值就变为:0001 0001 0001 0001 换成16进制为16843009;
所以这里一定要注意memset()常用于字符型数组或结构体。
3.对结构体清0。结果:正确。
struct Samstruct
{
public:
double c;
int a;
int b;
char tmp[2];
};
int main(int argc, char **argv)
{ 
Samstruct  stTest;
memset(&stTest,0,sizeof( Samstruct ));//这里stTest要用&符号,因为它是结构体变量(可以看成结构体的对象)
cout << stTest.c << endl;
cout << stTest.a << endl;
cout << stTest.b << endl;
for (int i = 0 ; i < 2 ; ++i )
{
cout << stTest.tmp[i] << endl;
}


system("pause");
return 0;
}
4.对结构体数组清0。结果:正确。
struct Samstruct
{
public:
double c;
int a;
int b;
char tmp[2];
};
int main(int argc, char **argv)
{ 
Samstruct  stTest[5];
memset(stTest,0,sizeof( Samstruct )*5); // 因为是数组所以stTest不需要&,
                                       //而且第三个参数为sizeof( Samstruct )*5;
for (int i = 0 ; i < 5 ; ++i )
{
cout << stTest[i].c << endl;
cout << stTest[i].a << endl;
cout << stTest[i].b << endl;
for (int j = 0 ; j < 2 ; ++j )
{
cout << stTest[i].tmp[j] << endl;
}
}


system("pause");
return 0;
}
以上内容仅供参考,欢迎交流!
【C语言】memset(含常见用途、注意事项) 场景 示例代码初始化数组 memset(arr, 0, sizeof(arr))清零动态内存 memset(ptr, 0, size * sizeof(int))初始化结构体 memset(&struct, 0, sizeof(struct))填充非零值 memset(arr, 1, sizeof(arr))通过 memset,可以快速初始化或填充内存区域,但需注意其按字节填充的特性。 阅读详情

相关推荐

Coursera 学习记录:为什么memset无法将二维整型数组全部赋值为1?以及如何解决!

比如,你想给一个二维整型数组初始化赋值为1,或者其他特定值,并且,你知道要用memset来赋值,于是你就这样写了: #include &lt;iostream&gt; #include &lt;cstring&gt; int main(){ int num[10][10]; memset(num, 1, sizeof(num)); } 你很得意地想要继续,结果,当你循环打印出数组进行判断...

AhaKnow 1722

如何对double型变量进行memset获得极大值或极小值

我们都知道,如果想对int型变量清极大值或极小值,我们一般选择memset(a,0x3f,sizeof a);或者memset(a,0xef,sizeof a);。然而,如果对double型清0x3f,我们经常会得到一个连1都不到的小数。那么对double清极值是否智能手动或者fill(a+1,a+n,0x7fffffff);呢? 首先我们运行以下程序 #include #incl

世界 8863

memset()函数的用法详解

前言 最近做题时突然想到用memset给数组的元素赋值100,但是发现结果和想象中的不一样 通过debug看到数组中的元素的值都为1684300900,而明明给它的是100,这是为什么呢,于是查阅了一下memset函数的用法和原理 memset()函数介绍 首先来看函数原型 void *memset(void *str, int c, size_t n) 解释:复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。 作用:是在一段内存块中填充某个给定的值,它是对较大的结构体或数

weiambt的博客 28万+

memset()函数的用法

memset()简介 memset()函数原型是extern void *memset(void *buffer, int c, int count);        buffer:为指针或是数组 c:是赋给buffer的值 count:是buffer的长度.用法一: 这个函数在socket中多用于初始化或者清空数组.如:原型是memset(buffer, 0, sizeof(buffer));初...

We_are_family678的博客 405

从叶片之舞到数据之眼:净空雷达如何重塑风电安全与效率的边界

净空雷达通过激光或毫米波技术实现风机叶片与塔筒间距离的毫米级实时监测,极大提升了风电场在极端天气下的安全性与运营效率。这项技术不仅预防扫塔事故,还通过数据可视化与智能分析赋能叶片健康管理和发电优化,成为风电数字化运维的核心基础设施。

xk7n92h3p5m的博客 1161

大模型训练(1):流水线并行

Gpipe的方法是,在训练时计算和运用的是micro-batch里的均值和方差,但同时持续追踪全部mini-batch的移动平均和方差,以便在测试阶段进行使用。流水线并行的核心思想是:在模型并行的基础上,进一步引入数据并行的办法,即把原先的数据再划分成若干个更小的batch,分批送入GPU进行训练,算一部分就让下一个GPU动起来。从实验结果可知,在关掉NVlinks的情况下,Gpipe一样也能实现随着GPU数量的增加,训练速度也增加的效果。前文说过,随着模型的增加,每块GPU中存储的中间结果也会越大。

呆呆象呆呆的博客 1970

C函数之memset()函数用法

C函数之memset()函数用法 1.功能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针 2. 需要的头文件  or 3.函数原型:  void *memset(void *s,int ch, unsigned n) 4.memset可以方便的清空一个结构类型的变量

wrw112358的专栏 543

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’

本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。

weixin_30566063的博客 503

【c++】c语言中memset()函数和assert()断言宏的用法

c语言中的memset()函数 功能:将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作。 用法:void *memset(void *s, char ch, unsigned n); 头文件<memory.h> 栗子 #include <string.h> #inc...

mysterious superstar 466

tecplot 通过数据点、坐标点绘制云图、三维云图

使用坐标点绘制二维云图或三维云图

medicalmask的博客 3万+

MDT部署实战:除了Office,这些“装机必备”软件也能一键静默安装(含静默参数)

本文详细介绍了如何利用Microsoft Deployment Toolkit(MDT)实现企业级软件的静默安装,包括浏览器、开发工具和系统增强工具等“装机必备”软件的部署方案。通过命令行参数和MSI属性,IT运维团队可以高效构建标准化工作环境,提升部署效率并确保版本一致性。文章还提供了安装顺序控制、结果验证和常见问题排错等高级技巧。

weixin_26985923的博客 172

C++中memset()函数的用法详解

memset

weixin_45842200的博客 4174

大疆精灵3无人机2.4GHz通信系统实测:跳频扩频技术深度解析

跳频扩频(FHSS)是一种经典的扩频通信技术,其核心原理是通过让载波频率在一个宽频带上按伪随机序列快速跳变,将窄带信号的能量扩散开来。这种技术能有效对抗固定频率干扰,提升通信的可靠性和抗截获性,在无线遥控、军事通信等领域具有重要价值。在无人机、物联网等对实时性与可靠性要求高的应用场景中,FHSS技术能显著增强复杂电磁环境下的链路鲁棒性。本文以频谱分析仪实测大疆精灵3无人机为例,深入剖析其2.4GHz频段遥控与图传系统的工作特性,揭示了其采用的成熟FHSS方案,包括约76MHz的总跳频带宽、39个信道及约2M

weixin_33935636的博客 310

C函数之memcpy()函数和memset()函数用法

头文件include<stdio.h>由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。函数返回一个。

2401_83052144的博客 2072

卫朋:IPD流程落地之产品开发验证阶段解读

IPD验证阶段

产品线负责人 1487

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part2知识获取与图谱构建、服务搭建

前序文章:其中原项目提供了关系数据如下: 其中五列数据表示:人物1,人物2,人物1与人物2关系,人物1所属家族,人物2所属家族。关系说明:以第一列为例,贾演是贾代化的父亲。下面我们就将这个数据放到neo4j中。这些需要去连接,需要安装这个包: 程序中,我使用去读取配置文件, 其中为了保持配置全局唯一性,使用单例的写法。 后面就是创建构建关系文件,构建neo4j图谱数据了,如下: 后期可能会将构建图谱内容使用flask去生成命令行的方式构建,暂时在开发的过程查看构建情况,便于调试。导入关系后,我们再查看

让算法融入生活,改变生活! 4081

C++ memset()函数用法

c++中的memset()函数是初始化函数,作用是将某一块内存中的全部内容设置为指定的值,通常用来给新申请的内存做初始化工作。

m0_51991709的博客 5076

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

memset函数java_memset()函数用法

1。void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值c。2。例子#includevoid main(){char *s="Golden Global View";clrscr();memset(s,'G',6);printf("%s",s);getchar();return 0;}3。memset()函数常用于内存空...

weixin_29359133的博客 646

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c语言中函数memset()用法

功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,   块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作   用 法: void *memset(void *s, char ch, unsigned n);   程序例:   #include   #include   #include   int m

qq_36675830的博客 301

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【memset()函数的用法】

memset()函数的用法

weixin_50312169的博客 198
上一篇: C++参数传递的四种方法
下一篇: 数组和数组名的关系
CHF_VIP
博客等级 码龄14年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值