首页 > 代码库 > 基础函数介绍
基础函数介绍
sprintf()
函数原型:int sprintf( char *buffer, const char *format [, argument] ... );
功能介绍:
1、把一个字符串赋值(拷贝)给另一个字符串,如:
sprintf(str1, str2);//把字符串str2拷贝给str1
2、把其他类型的数据按某些要求(比如补零)转化为字符串
sprintf(str1,"%04X",str.mid(0,4).toInt(&is_ok,10));
memset()
函数原型:void *memset(void *s, int ch, size_t n);
功能介绍:
将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值,memset是以字节为单位,初始化内存块
1. 当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想要的值,比如,
char data[10];
memset(data, 1, sizeof(data)); // right
memset(data, 0, sizeof(data)); // right
而在初始化其他基础类型时,则需要注意,比如
int data[10];
memset(data, 0, sizeof(data)); // right
memset(data, -1, sizeof(data)); // right
memset(data, 1, sizeof(data)); // wrong, data[x] would be 0x0101 instead of 1
2. 当结构体类型中包含指针时,在使用memset初始化时需要小心。
比如如下代码中:
struct Parameters {
int x;
int* p_x;
};
Parameters par;
par.p_x = new int[10];
memset(&par, 0, sizeof(par));
当memset初始化时,并不会初始化p_x指向的int数组单元的值,而会把已经分配过内存的p_x指针本身设置为0,造成内存泄漏。同理,对std::vector等数据类型,显而易见也是不应该使用memset来初始化的。
基础函数介绍
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。