C语言中,为什么调用数学函数库中的函数必须在程序开头加一条#include指令,把头文件“math

Python09

C语言中,为什么调用数学函数库中的函数必须在程序开头加一条#include指令,把头文件“math,第1张

你可以简单理解为有两段代码,

一段是你自己的

还有一段是在math.h中,

现在你想调用math函数,

但这个函数不在你这段代码中,

而是在math.h中,

这时你就需要加一条#include指令,把头文件“math.h”包含到你的代码中来,

不然你没法使用math函数,

好吧

,

确实很绕~~

你说的就是库函数的源码,也就是glibc,源码在ftp://ftp.gnu.org/gnu/glibc可以下到,比如下载ftp://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.gz,打开后就可以看到你需要的各种库的具体实现代码,比如在string中的strcat.c中就有

char *strcat (dest, src)

     char *dest

     const char *src

{

  char *s1 = dest

  const char *s2 = src

  reg_char c

  /* Find the end of the string.  */

  do

    c = *s1++

  while (c != '\0')

  /* Make S1 point before the next character, so we can increment

     it while memory is read (wins on pipelined cpus).  */

  s1 -= 2

  do

    {

      c = *s2++

      *++s1 = c

    }

  while (c != '\0')

  return dest

}

一、定位不同。

1、stdlib.h是standard library标准库头文件,定位在通用工具函数。

2、stdio.h是standard input&output标准输入输出头文件,定位在标准的输入输出工具函数。

二、封装函数不同。

1、stdlib.h主要封装了malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等函数。

2、stdio.h主要封装了getchar()、putchar()、scanf()、printf()、gets()、puts()、sprintf()等函数。

三、定义类型不同

1、stdlib.h定义了size_t、wchar_t、div_t、ldiv_t和lldiv_t五种类型。

2、stdio没有定义类型。

扩展资料

stdlib.h包含的函数

输入样式:C语言模式:#include <stdlib.h>

C++样式:#include <cstdlib>

1、函数名称:calloc

函数原型: void calloc(unsigned n,unsigned size)

函数功能: 分配n个数据项的内存连续空间,每个数据项的大小为 size

函数返回: 分配内存单元的起始地址,如果不成功,返回0

2、函数名称:free

函数原型: void free(void* p)

函数功能: 释放 p 所指的内存区

函数返回:

参数说明: p- 被释放的指针

3、函数名称:malloc

函数原型: void * malloc(unsigned size)

函数功能: 分配 size 字节的存储区

函数返回: 所分配的内存区地址,如果内存不够,返回0

4、函数名称: realloc

函数原型: void * realloc(void * p,unsigned size)

函数功能: 将 p 所指出的已分配内存区的大小改为 size,size 可以比原来分配的空间大或小

函数返回: 返回指向该内存区的指针.NULL-分配失败

5、函数名称: rand

函数原型: int rand(void)

函数功能: 产生0到32767间的随机整数(0到0x7fff之间)

函数返回: 随机整数

6、函数名称: abort

函数原型: void abort(void)

函数功能: 异常终止一个进程.

参考资料来源:百度百科- stdlib.h