栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

使用C++的函数memset()时要注意它的操作对象是每一个字节

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用C++的函数memset()时要注意它的操作对象是每一个字节

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

函数memset()的介绍大家可参见百度百科,写得很清楚了,百度百科链接如下:
https://baike.baidu.com/item/memset/4747579

使用C++的函数memset()时要注意它的操作对象是每一个字节,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。

比如我想利用它把int型数组的每一个元素的值全部置为88是不行的,测试代码如下:

#include 
#include 

int main()
{
	int bucket_size = 3;
	int *bucket;
	bucket = new int[bucket_size];
	memset(bucket, 88, bucket_size * 4);
	std::cout <<"bucket[0]的值为:"<< bucket[0] << std::endl;
										
	return 0;
}

运行结果如下:

但因为char类型在内存中是只占一个字节的,所以是可以用函数memset()将char数组中的每一个元素置为88的,测试代码如下:

#include 
#include 

int main()
{
	int bucket_size = 3;
	char *bucket;
	bucket = new char[bucket_size];
	memset(bucket, 88, bucket_size * 1);
	std::cout <<"bucket[0]的值为:"<< bucket[0] << std::endl;
										
	return 0;
}

运行结果如下:


可见结果和刚才说的一致。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号