蓝桥杯基础知识3 memset()

这篇具有很好参考价值的文章主要介绍了蓝桥杯基础知识3 memset()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

蓝桥杯基础知识3 memset()

#include <bits/stdc++.h>
using namespace std;

int main(){
	int a[5];	//随机数
	for(int i = 0;i < 5; ++i)cout << a[i] << '\n';
	cout << '\n';
	
	memset(a, 0, sizeof a);	//0
	for(int i = 0;i < 5; ++i)cout << a[i] << '\n';
	cout << '\n';
	
	memset(a, -1, sizeof a);	//-1
	for(int i = 0;i < 5; ++i)cout << a[i] << '\n';
	cout << '\n';
	
	memset(a, 1, sizeof(a));	//16843009
	for(int i = 0;i < 5; ++i)cout << a[i] << '\n';
	cout << '\n';
	
	for(int i = 0;i < 5; ++i)cout << bitset<32>(a[i]) << '\n';
	cout << '\n';	//4*8位=32位:00000001000000010000000100000001
					//					1		1		1		1
	
	memset(a, 0x3f, sizeof(a));	//0x表示16进制,1061109567
	for(int i = 0;i < 5; ++i)cout << a[i] << '\n';
	cout << '\n';
	
	for(int i = 0;i < 5; ++i)cout << bitset<32>(a[i]) << '\n';
	cout << '\n';	//4*8位=32位:00111111001111110011111100111111
					//              3   f   3   f   3   f   3   f
	
	
	return 0;
}


C++ 在线工具 | 菜鸟工具 (runoob.com)

蓝桥杯基础知识3 memset(),蓝桥杯,c++,蓝桥杯

原码,反码,补码相互转换在线计算器 (23bei.com)

8位的系统中-1 补码为8个1,即11111111;0的补码是00000000

memset()是一个用于设置内存块值的函数。定义在<cstring>头文件中。函数声明:

void* memset(void*ptr, int value, size_t num);

//                      指针           值        重置大小

ptr:指向要设置值的内存块的指针。

value:要设置的值,通常是一个整数。

num:要设置的字节数。

memset()将ptr指向的内存块的前num个字节设置为value的值,返回一个指向ptr的指针。

memset() 的作用是在一段内存块中填充某个给定的值。

memset(arr, 0, sizeof(arr)) 或 memset(arr, 0, sizeof arr)将数组arr的所有元素设置为0.

对于非字符类型的数组可能产生未定义行为。memset会将每个byte设置成value。

char ~ 8bit ~ 1 Byte        int ~ 32bit ~ 4Byte

value = 1,二进制表示:00000001 00000001 00000001 00000001

//n必须为宏或者constexpr
int arr[n] = {0};    

​C/C++基础语法 定义一个数组并初始化为0 

//int arr[n];
arr[n] = {0};

把数组后面的一块大小为sizeof(int)的内存复制为0,这块内存不属于数组,具体执行结果与内存结构有关,属于典型未定义行为。

#include <bits/stdc++.h>
using namespace std;

int main(){
	int n = 5;
	
	int b[n] = {};
	for(int i = 0; i < 2*n; ++i)cout << b[i] << ' ';
	cout <<'\n';
	
	int a[n];
	a[n] = {0};
	for(int i = 0; i < 2*n; ++i)cout << a[i] << ' ';
	cout <<'\n';
	
	//0 0 0 0 0 32553 1101044968 32553 1101043616 32553 
	//-2129291136 32764 0 10 0 0 4198995 0 0 0 	
	
	int m = 4;
	
	int c[m] = {};
	for(int i = 0; i < 2*m; ++i)cout << c[i] << ' ';
	cout <<'\n';
	
	int d[m];
	d[m] = {0};
	for(int i = 0; i < 2*m; ++i)cout << d[i] << ' ';
	
	//0 0 0 0 -2129291136 32764 0 10 
	//0 0 4199454 0 0 0 0 0 

	return 0;
}

reference:

原码和补码之间的相互转化 - 知乎 (zhihu.com)

为什么0的补码形式只有一种?-CSDN博客​​​​​​

c++ - What's the difference between constexpr and const? - Stack Overflow

浅谈 C++ 中的 const 和 constexpr - 知乎

C 库函数 – memset() | 菜鸟教程 (runoob.com)

C++中memset(a, 0, sizeof(a))和a[n] = {0}有什么本质上的区别? - 知乎 (zhihu.com)

C++中memset()函数的用法详解_c++如果a数组是int类型,则memset是以每4个字节为一组赋值-CSDN博客

memset函数及其用法,C语言memset函数详解 (biancheng.net)文章来源地址https://www.toymoban.com/news/detail-794524.html

到了这里,关于蓝桥杯基础知识3 memset()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity | Shader基础知识(第九集:shader常用单词基础知识速成)

    目录 一、顶点(Vertex)和法线(Normal) 二、UV信息 三、 基础数据种类 1 基础数据种类 2 基础数据数组 3 基础数据数组的赋值 4 对数据数组的调用 四、 基础矩阵 1 基础矩阵种类  2 对矩阵数组的调用 2.1对一个数据的调用  2.2对多个数据的调用  2.3对数据的赋值 五、基础纹理种

    2024年02月01日
    浏览(69)
  • Opengl入门基础-基础知识

    通过之前的教程,我们已经拥有了开发环境,但是在真正开发程序之前,我们首先了解下Opengl的基本概念。 Opengl是什么? 通常网上会说Opengl是一种规范,一种接口,但是这种说法有点抽象,我们不妨先看看下面这个简单的gl流程 代码中可能有人对GLFW_OPENGL_PROFILE这类参数感到

    2024年02月11日
    浏览(45)
  • Unity中的热更新的基础知识,Xlua与ILRuntime基础知识

    热更新是指在不需要重新编译打包游戏的情况下,在线更新游戏中的一些非核心代码和资源,比如活动运营和打补丁。热更新分为资源热更新和代码热更新两种,代码热更新实际上也是把代码当成资源的一种热更新,但通常所说的热更新一般是指代码热更新。资源热更新主要

    2023年04月09日
    浏览(86)
  • YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解

    前言: Hello大家好,我是小哥谈。 YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法,存在着很多可以学习的地方。本文将对YOLOv5检测算法的核心基础知识进行

    2024年02月14日
    浏览(50)
  • 电路分析基础笔记(一)基础知识

    基本概念、定律、定理、基本分析方法 目录 前言 一、电路分析概述 二、电路与电路模型 三、电路元件  四、基尔霍夫定律 五、两类约束和电路方程 前言      电路分析基础要求全面掌握电路分析基本概念、基本定理和定律,具有灵活运用电路分析理论和方法分析问题和解

    2024年02月05日
    浏览(76)
  • Windows安全基础:认证基础知识

    目录 Windows凭据 Windows访问控制模型 访问令牌: 安全标识符(SID): 安全描述符: 令牌安全防御 1、禁止域管理员异机登录 2、开启“审核进程创建”策略 SSPI(Security Support Provider Interface ,安全支持提供程序接口):是windows操作系统中用于执行各种安全相关操作的公用API,

    2024年02月02日
    浏览(54)
  • eclipse基础操作+基础知识(一)

    🖊作者 : D. Star. 📘专栏 :JAVA 😆今日分享 : 电影版–花千骨 背景:eclipse已经安装完成。 eclipse版本:2020.06 tomcat版本:8.5 file–new–project… 查看创建好后的视图 在src下建一个包:右击src–new–package 在包下建一个 .java 文件:右击包–new–class 建完之后就可以在 .java 文件下敲

    2024年01月24日
    浏览(62)
  • Python基础知识:整理10 异常相关知识

        当在主函数中没有捕获处理异常时,会报异常错误 处理后   

    2024年01月18日
    浏览(56)
  • C++ | 语句的基础知识(夯实基础)

    本篇文章主要介绍数据结构中 C++ 的语句内容,适合有 零基础 的同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! ☀️大家好!我是新人博主朦胧的雨梦,希望大家多多关照和支持😝😝😝 🌖大家一起努力,共同成长,相信我们都会遇到更好

    2024年02月05日
    浏览(51)
  • MySQL基础(三十二)事务基础知识

    1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 能看出在 MySQL 中,只有InnoDB 是支持事务的。 1.2 基本概念 事务 :一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理的原则 :保证所有事务都

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包