1、memset用法
C 库函数 void *memset(void *str, int c, size_t n) 用于将一段内存区域设置为指定的值。
简单理解,就是定义一组数组后,将数组的多少位设定为固定的内存位置,并赋值,一般用于固定参数的存储;
可以用于将内存块清零或设置为特定值。
例如:
int a[64];//定义一个长度64位的数组
memset(a, 1, 64 * sizeof(int));//初始化a,并开辟一块内存空间给到a,将一段内存区域设定为指定的值;
//1,为初值,64*sizeof(int),定义内存位置和长度
也可以如下使用方式(该方式摘录自菜鸟教程)
先声明50个字符,再赋值字符串
用memset将字符串的前7位修改$$$$$$$
#include <stdio.h>
#include <string.h>
int main ()
{
char str[50];
strcpy(str,"This is string.h library function");
puts(str);
memset(str,'$',7);
puts(str);
return(0);
}
又或者,使用宏定义好字符串长度,定义类时候在构造函数内对数据进行初始化,可对不同类型的参数进行内存空间的开辟和定义
注:代码示例内容为某多个同类检测项的检测结果管控参数
#define MANAGESIZE 64
class ManageParam
{
public:
ManageParam()
{ ///< 初始化参数
memset(upper, 0, MANAGESIZE * sizeof(float));
memset(lower, 0, MANAGESIZE * sizeof(float));
memset(offset, 0, MANAGESIZE * sizeof(float));
memset(value, 0, MANAGESIZE * sizeof(float));
memset(flag, 1, MANAGESIZE * sizeof(bool));
memset(check, 0, MANAGESIZE * sizeof(bool));
}
float upper[MANAGESIZE];///< 结果上限值
float lower[MANAGESIZE]; ///< 结果下限值
float offset[MANAGESIZE];///< 结果偏移量
float value[MANAGESIZE];///< 结果真实值
bool flag[MANAGESIZE];///< 当前结果是否 OK
bool checkMANAGESIZE];///< 当前项是否生成曲线数据
}
2、C++函数定义的括号后面加上const作用
void add(float value,int index)const{}
如上述代码示例,一般函数参数后面加上const后,该类的成员变量若是在该函数内调用使用,则不能进行参数赋值和修改,只能作为判断参数使用,这样保证了程序结构的安全和严谨性;
eg:错误使用方式如下。age成员函数不能增加
int temp::getAge() const
{
age+=10; // #Error...error C2166: l-value specifies const object #
return age;
}