C标准库函数-3 math.h stdlib.h assert.h stdarg.h

math.h

sin

double sin(double arg);
返回arg的正弦值,arg单位为弧度。

cos

double cos(double arg);
返回arg的余弦值,arg单位为弧度。

tan

double tan(double arg);
返回arg的正切值,arg单位为弧度。

asin

double asin(double arg);
返回arg的反正弦值sin-1(x),值域为[-pi/2,pi/2], 其中变元范围[-1,1]。

acos

double acos(double arg);
返回arg的反余弦值cos-1(x),值域为[0,pi], 其中变元范围[-1,1]。

atan

double atan(double arg);
返回arg的反正切值tan-1(x),值域为[-pi/2,pi/2]。

atan2

double atan2(double a, double b);
返回a/b的反正切值tan-1(a/b),值域为[-pi,pi]。

sinh

double sinh(double arg);
返回arg的双曲正弦值。

cosh

double cosh(double arg);
返回arg的双曲余弦值。

tanh

double tanh(double arg);
返回arg的双曲正切值。

exp

double exp(double arg);
返回幂函数ex。

log

double log(double arg);
返回自然对数ln(x),其中变元范围arg > 0。

log10

double log10(double arg);
返回以10为底的对数log10(x),其中变元范围arg > 0。

pow

double pow(double x, double y);
返回xy,如果x=0且y<=0或者如果x<0且y不是整数,那么产生定义域错误。

sqrt

double sqrt(double arg);
返回arg的平方根,其中变元范围arg>=0。

ceil

double ceil(double arg);
返回不小于arg的最小整数。

floor

double floor(double arg);
返回不大于arg的最大整数。

fabs

double fabs(double arg);
返回arg的绝对值|x|。

ldexp

double ldexp(double num, int exp);
返回num * 2exp。

frexp

double frexp(double num, int *exp);
把num分成一个在[1/2,1)区间的真分数和一个2的幂数。将真分数返回,幂数保存在*exp中。如果num等于0,那么这两部分均为0。

modf

double modf(double num, double *i);
把num分成整数和小数两部分,两部分均与num有同样的正负号。函数返回小数部分,整数部分保存在*i中。

fmod

double fmod(double a, double b);
返回a/b的浮点余数,符号与a相同。如果b为0,那么结果由具体实现而定。

stdlib.h

atof

double atof(const char *str);
把字符串str转换成double类型。等价于:strtod(str, (char**)NULL)。

atoi

int atoi(const char *str);
把字符串str转换成int类型。等价于:(int)strtol(str, (char**)NULL, 10)。

atol

long atol(const char *str);
把字符串str转换成long类型。等价于:strtol(str, (char**)NULL, 10)。

strtod

double strtod(const char *start, char **end);
把字符串start的前缀转换成double类型。在转换中跳过start的前导空白符,然后逐个读入构成数的字符,任何非浮点数成分的字符都会终止上述过程。如果end不为NULL,则把未转换部分的指针保存在*end中。
如果结果上溢,返回带有适当符号的HUGE_VAL,如果结果下溢,那么函数返回0。在这两种情况下,errno均被置为ERANGE。

strtol

long int strtol(const char *start, char **end, int radix);
把字符串start的前缀转换成long类型,在转换中跳过start的前导空白符。如果end不为NULL,则把未转换部分的指针保存在*end中。
如果radix的值在2到36间之间,那么转换按该基数进行;如果radix为0,则基数为八进制、十进制、十六进制,以0为前导的是八进制,以0x或0X为前导的是十六进制。无论在哪种情况下,串中的字母是表示10到radix-1之间数字的字母。如果radix是16,可以加上前导0x或0X。
如果结果上溢,则依据结果的符号返回LONG_MAX或LONG_MIN,置errno为ERANGE。

strtoul

unsigned long int strtoul(const char *start, char **end, int radix);
与strtol()类似,只是结果为unsigned long类型,溢出时值为ULONG_MAX。

rand

int rand(void);
产生一个0到RAND_MAX之间的伪随机整数。RAND_MAX值至少为32767。

srand

void srand(unsigned int seed);
设置新的伪随机数序列的种子为seed。种子的初值为1。

calloc

void *calloc(size_t num, size_t size);
为num个大小为size的对象组成的数组分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。
分配的内存区域中的所有位被初始化为0。

malloc

void *malloc(size_t size);
为大小为size的对象分配足够的内存,并返回指向所分配区域的第一个字节的指针;如果内存不足以满足要求,则返回NULL。
不对分配的内存区域进行初始化。

realloc

void *realloc(void *ptr, size_t size);
将ptr指向的内存区域的大小改为size个字节。如果新分配的内存比原内存大,那么原内存的内容保持不变,增加的空间不进行初始化。如果新分配的内存比原内存小,那么新内存保持原内存区中前size字节的内容。函数返回指向新分配空间的指针。如果不能满足要求,则返回NULL,原ptr指向的内存区域保持不变。
如果ptr为NULL,则行为等价于malloc(size)。
如果size为0,则行为等价于free(ptr)。

free

void free(void *ptr);
释放ptr指向的内存空间,若ptr为NULL,则什么也不做。ptr必须指向先前用动态分配函数malloc、realloc或calloc分配的空间。

abort

void abort(void);
使程序非正常终止。其功能类似于raise(SIGABRT)。

exit

void exit(int status);
使程序正常终止。atexit函数以与注册相反的顺序被调用,所有打开的文件被刷新,所有打开的流被关闭。status的值如何被返回依具体的实现而定,但用0表示正常终止,也可用值EXIT_SUCCESS和EXIT_FAILURE。

atexit

int atexit(void (*func)(void));
注册在程序正常终止时所要调用的函数func。如果成功注册,则函数返回0值,否则返回非0值。

system

int system(const char *str);
把字符串str传送给执行环境。如果str为NULL,那么在存在命令处理程序时,返回0值。如果str的值非NULL,则返回值与具体的实现有关。

getenv

char *getenv(const char *name);
返回与name相关的环境字符串。如果该字符串不存在,则返回NULL。其细节与具体的实现有关。

bsearch

void *bsearch(const void *key, const void *base, size_t n, size_t size,\
 int (*compare)(const void *, const void *));
在base[0]...base[n-1]之间查找与*key匹配的项。size指出每个元素占有的字节数。函数返回一个指向匹配项的指针,若不存在匹配则返回NULL。
函数指针compare指向的函数把关键字key和数组元素比较,比较函数的形式为:
int func_name(const void *arg1, const void *arg2);
arg1是key指针,arg2是数组元素指针。
返回值必须如下:
arg1 < arg2时,返回值<0; 
arg1 == arg2时,返回值==0; 
arg1 > arg2时,返回值>0。 
数组base必须按升序排列(与compare函数定义的大小次序一致)。

qsort

void qsort(void *base, size_t n, size_t size, \
 int (*compare)(const void *, const void *));
对由n个大小为size的对象构成的数组base进行升序排序。
比较函数compare的形式如下:
int func_name(const void *arg1, const voie *arg2);
其返回值必须如下所示:
arg1 < arg2,返回值<0; 
arg1 == arg2,返回值==0; 
arg1 > arg2,返回值>0。 

abs

int abs(int num);
返回int变元num的绝对值。

labs

long labs(long int num);
返回long类型变元num的绝对值。

div

div_t div(int numerator, int denominator);
返回numerator/denominator的商和余数,结果分别保存在结构类型div_t的两个int成员quot和rem中。

ldiv

ldiv_t div(long int numerator, long int denominator);
返回numerator/denominator的商和余数,结果分别保存在结构类型ldiv_t的两个long成员quot和rem中。

assert.h

assert

void assert(int exp);
assert宏用于为程序增加诊断功能。当assert(exp)执行时,如果exp为0,则在标准出错输出流stderr输出一条如下所示的信息:    Assertion failed: expression, file filename, line nnn
然后调用abort终止执行。其中的源文件名filename和行号nnn来自于预处理宏__FILE__和__LINE__。
如果<assert.h>被包含时定义了宏NDEBUG,那么宏assert被忽略。

stdarg.h

va_start

va_arg

va_end

void va_start(va_list ap, lastarg);
type va_arg(va_list ap, type);
void va_end(va_list ap);
假设函数f含有可变数目的变元,lastarg是它的最后一个有名参数,然后在f内说明一个类型为va_list的变量ap,它将依次指向每个变元:
    va_list ap;
在访问任何未命名的变元前必须用va_start宏对ap进行初始化:
    va_start(ap, lastarg);
此后,宏va_arg的每次执行将产生一个与下一个未命名的变元有相同类型和值的值,它同时还修改ap,以使下一次使用va_arg时返回下一个变元:
    va_arg(ap, type);
当所有的变元处理完毕之后,f返回之前,必须调用一次宏va_end:
   va_end(ap);
例子:函数sum_series()的第一个参数是变元项数。
double sum_series(int num, … )
{
    double sum = 0.0, t;
    va_list ap;

    va_start(ap, num);
    for (; num; num--) {
        t = va_arg(ap, double);
        sum += t;
    }
    va_end(ap);
    return sum;
}
发布了38 篇原创文章 · 获赞 17 · 访问量 4310

猜你喜欢

转载自blog.csdn.net/qq_14877637/article/details/87386898