蓝桥杯基础知识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)

原码,反码,补码相互转换在线计算器 (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)

相关推荐

  1. 基础知识5 unique()

    2024-01-12 22:26:03       57 阅读
  2. 基础知识7 vector

    2024-01-12 22:26:03       43 阅读
  3. 基础知识8 list

    2024-01-12 22:26:03       54 阅读
  4. 基础知识1 字母大小写转换

    2024-01-12 22:26:03       74 阅读
  5. 基础知识4 swap()、reverse()

    2024-01-12 22:26:03       65 阅读
  6. python组基础知识速学!!!!

    2024-01-12 22:26:03       113 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 22:26:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 22:26:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 22:26:03       82 阅读
  4. Python语言-面向对象

    2024-01-12 22:26:03       91 阅读

热门阅读

  1. C++ STL:常用拷贝算法和替换算法

    2024-01-12 22:26:03       49 阅读
  2. AI全栈大模型工程师(八)Plugins 开发

    2024-01-12 22:26:03       58 阅读
  3. linux 文件打包 / 分割 / 组合 / 解压

    2024-01-12 22:26:03       51 阅读
  4. QT day4

    QT day4

    2024-01-12 22:26:03      56 阅读
  5. CentOS7搭建Harbor企业级Docker仓库

    2024-01-12 22:26:03       57 阅读
  6. thinkphp 模板解析

    2024-01-12 22:26:03       45 阅读
  7. PyTorch简单理解ChannelShuffle与数据并行技术解析

    2024-01-12 22:26:03       59 阅读
  8. Rust 闭包

    2024-01-12 22:26:03       56 阅读
  9. 并发编程(八)

    2024-01-12 22:26:03       54 阅读
  10. ClickHouse(21)ClickHouse集成Kafka表引擎详细解析

    2024-01-12 22:26:03       56 阅读
  11. draggable中的input、textArea无法聚焦问题解决

    2024-01-12 22:26:03       49 阅读
  12. 战略投资常用的ChatGPT通用提示词模板

    2024-01-12 22:26:03       53 阅读