概述
常用函数库
memset
是初始化函数:作用是将某一块内存中的内容全部设置为指定的值,这个函数通常为新申请的内存做初始化工作。
是对较大的结构体或数组进行清零操作的一种最快方法。
需要头文件<string.h>,在c++中为<cstring>
void *memset(void *s, int c, size_t n);
s:要被初始化的内存块
c:要被设置的值
h:要被设置该值的字符数
返回类型是一个指向存储区s的指针
注意
1.不能任意赋值
memset函数是按照字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。
因为memset函数只能取c的后八位给所输入范围的每个字节。也就是说无论c多大只有后八位二进制是有效的。
2.注意所赋值数组的元素类型
(1)对char类型数组a初始化元素为1
char a[4];
memset(a,"1",4);
//输出数组a为 1 1 1 1
(2)对int类型数组a初始化元素为1
int a[4];
memset(a,1,sizeof(a))
//输出数组a为 16843009 16843009 16843009 16843009
int数组:一般int所占内存空间为4个字节,所以在使用memset赋值时,不能用memset(a,1,4),不同的机器上int的大小可能不同,所以最好用sizeof()函数
当字符型数组时,字符型占据的内存大小就是1Byte,而memset函数也是以字节为单位进行赋值的,所以输出正确
当int数组时,整型占据的内存大小为4Byte,而memset函数还是按照字节为单位进行赋值,将1(00000001)赋给每一个字节。那么对于a[0]来说,其值为(00000001 00000001 00000001 00000001),即十进制的16843009。
getline
cin 不能输入包含嵌入空格的字符串,但getline可以
cin.getline()
cin.getline(接收字符串的变量m,接收字符个数,结束字符)
当第三个参数省略时,系统默认为'