2021-10-23

memset函数


头文件:

#include <string.h>

函数原型:

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

memset()函数是按字节对内存块进行初始化的
注意:不能用memset()函数将int数组初始化为0和-1之外的其他值
int arr[8];
初始化为0,memset(arr, 0, sizeof(arr));
初始化为-1,memset(arr, -1, sizeof(arr));
用memset()函数j将arr初始化为{-1,-1,-1,-1,-1,-1,-1,-1};然而memset(num,-1,8);这样写是不对的,要写成memset(num,-1,sizeof(int)*8);因为一个int占4个字节

#include <stdio.h>
#include <string.h>
int main()
{
	int arr[10];
	int i;
	memset(arr,-1, sizeof(arr));
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
输出:
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
#include <stdio.h>
#include <string.h>
int main()
{
	int arr[10];
	int i;
	memset(arr,1, sizeof(arr));
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}
输出:
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "hello world";//一个char占1个字节 
	memset(arr, '*', 5);
	printf("%s\n", arr);
	return 0;
}
输出:
***** world
上一篇:c语言关键字


下一篇:剑指offer 介绍一种很骚的做法 求1+2+…+n不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句 (A?B:C)。【简单易懂,代码可以直接运行】