C标准库源码解剖(14):通用函数stdlib.h
通用函数库在头文件stdlib.h中声明,比较庞大,主要分为以下几大类:存储分配、随机数生成、数字转换与整型运算、程序退出与环境通信、搜索与排序、多字节与宽字符的转换。由于汲及到存储分配、环境通信等,因此它们的大多数也依赖于操作系统。glibc中,通用函数库的核心实现在stdlib和malloc两个目录下。
stdlib.h中导出的所有标准接口如下:
1、malloc,calloc,realloc,free:内存分配与释放。分配的内存不进行任何初始化,保证对任何数据类型正确对齐
2、rand,srand,RAND_MAX:产生伪随机数,rand范围的上限由RAND_MAX指定,至少为32767
3、atof,atoi,atol,atoll:将字符串的初始部分转换成相应类型的数字。
4、strtod,strtof,strtold,strtol,strtoll,strtoul,strtoull:同上,但比上面的转换函数更完善。实际上glibc中,上面的几个转换函数都是直接调用这里的函数来实现的。
5、abort,atexit,exit,_Exit,EXIT_FAILURE,EXIT_SUCCESS:终止程序。exit在终止前会调用用atexit注册的各个函数,而abort和_Exit则不会。
6、getenv:返回指定环境参数name的对应值。
7、system:将字符串参数传递到操作系统的shell中,按实现定义的执行它。
8、qsort,bsearch:qsort对含有count个元素(每个元素的大小为size)的数组base按升序排序、bsearch在数组中搜索元素key。
9、abs,labs,llabs:返回参数的绝对值。
10、div,ldiv,lldiv:计算n除以d的商和余数,放在div_t,ldiv_t,lldiv_t结构中返回,结构中的成员quot=n/d,成员rem=n%d。
11、mblen,mbtowc,wctomb,MB_CUR_MAX:判断s的前n个字节是否是有效的多字节字符、多字节字符s转换成宽字符pwc、宽字符pwc转换成多字节字符s、 MB_CUR_MAX表示多字节字符的最大字节数。
12、mbstowcs,wcstombs:多字节字符串与宽字符串之间的转换,返回转换后的字符数(不包括null终止符),发现错误则返回-1(转换成size_t)。
相关文档:
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
华为C/C++笔试题2 收藏
1. 某32位系统下, C++程序,请计算sizeof 的值
#include <stdio.h>
#include <malloc.h>
void Foo ( char str[100] )
{
printf("sizeof(str)=%d \n", sizeof(str) );//此处使用char *str与char str[100]是一样的,char str[100]不指明大小(char str[]) ......
linux 下 用c语言创建mysql数据库笔记(二)
-------两个简单的例子,供参考比较
《例一》
#include <stdio.h>
#include <stdlib.h>
#include
&q ......
Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性。
Java调用C/C++写好的DLL库时,由于基本数据类型不同、使用字节序列可能有差异,所以在参数传递过程中容易出现问题,DLL中可能需要做相应的转换。
使用Java调用DLL动态链接库的方案通常有三种:JNI, Ja ......
排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高。
而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将给出详细的说明。
对于排序的算法我想先做一点简单的介绍,也是给这篇文章理一个提纲 ......