C、C函数和类库详解(VC版)

上传人:自*** 文档编号:23230128 上传时间:2017-11-30 格式:DOCX 页数:251 大小:761.38KB
返回 下载 相关 举报
C、C函数和类库详解(VC版)_第1页
第1页 / 共251页
C、C函数和类库详解(VC版)_第2页
第2页 / 共251页
C、C函数和类库详解(VC版)_第3页
第3页 / 共251页
C、C函数和类库详解(VC版)_第4页
第4页 / 共251页
C、C函数和类库详解(VC版)_第5页
第5页 / 共251页
点击查看更多>>
资源描述

《C、C函数和类库详解(VC版)》由会员分享,可在线阅读,更多相关《C、C函数和类库详解(VC版)(251页珍藏版)》请在金锄头文库上搜索。

1、C、C+函数和类库详解(VC+版)(未完成)整理者:赤子玄心QQ:280604597Email:大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的1 函数库1.1 函数模板(未完成)函数名称 xxx头文件 #include #include 库文件 #pragma comment(lib, xxx.lib)函数功能 函数主要功能说明。函数声明 类型 函数名 (类型 参数 1,类型 参数 2,);参数 1,输入|输出|输入&输出:参数说明。参数 2,输入|输出|输入&输出:参数说明。函数参数返回值 返回值 1:返回值说明。返回值 2:返回值说明。错误码 EXXXX:错误码说

2、明。EXXXX:错误码说明。线程安全 是 或 否 或 未知,表示此函数多线程调用是否会产生影响原子操作 是 或 否 或 未知,表示此函数是否是单一操作,不是多个步骤的组合其他说明 1.2 内存分配1.2.1realloc函数名称 realloc头文件 #include #include 库文件 无函数功能 调整一块已分配的旧内存的长度,或者直接分配一块新内存。函数声明 void * realloc (void * ptr,size_t size);ptr,输入:已分配的旧内存指针。如果为 NULL,表示直接分配一块新内存,此时本函数就类似 malloc()函数。函数参数size,输入:新内存的

3、长度,单位字节。如果为 0,表示释放已分配的旧内存。如果新内存比旧内存大,再把旧内存的数据全部拷贝过来,新内存的指针与旧内存可能一样,也可能不一样,扩大的内存部分里的数据是未被初始化过的。如果新内存比旧内存小,就会把旧内存截断作为新内存,新内存的指针与旧内存一样,被截断的数据会丢失。如果新内存和旧内存一样大,将不做任何改动。返回值 非 NULL:新内存的指针。NULL:失败,已分配的旧内存的长度、指针和数据都不会改变。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是原子操作 是其他说明 如果内存不再使用时,记得调用 free()释放内存,防止内存泄露。分配的内存是全局的,在

4、整个进程内有效。旧内存必须是先前通过调用 malloc(), calloc(), 或 realloc()函数分配的。1.2.2malloc函数名称 malloc头文件 #include #include 库文件 无函数功能 分配一块指定长度的内存。函数声明 void * malloc (size_t size);函数参数 size,输入:存放内存的长度的值,单位字节。返回值 非 NULL:分配的内存的指针。NULL:失败,调用 errno变量查看错误码。错误码 ENOMEM:内存不足。线程安全 是原子操作 是其他说明 如果内存不再使用时,记得调用 free()释放内存,防止内存泄露。分配的内存

5、是全局的,整个进程都可以使用。分配的内存里的数据是未被初始化过的。1.2.3calloc函数名称 calloc头文件 #include #include 库文件 无函数功能 分配一块 nmemb个子块长度为 size的内存,子块与子块之间是连续的,等同于 malloc ( nmemb * size)。函数声明 void * calloc (size_t nmemb,size_t size);nmemb,输入:存放多少个子块的值。函数参数size,输入:存放每个子块长度的值,单位字节。返回值 非 NULL:内存的指针。NULL:失败,调用 errno变量查看错误码。错误码 ENOMEM:内存不足

6、。线程安全 是原子操作 是其他说明 如果内存不再使用时,记得调用 free()释放内存,防止内存泄露。分配的内存是全局的,在整个进程内有效。内存里的数据是全部被初始化为 0。1.2.4_msize函数名称 _msize头文件 #include 库文件 无函数功能 用于获取 alloc()相关函数或 new分配的内存的实际可用的长度,单位字节,此长度等于分配内存时指定的长度。函数声明 size_t _msize (void * memblock);函数参数 memblock,输入:存放 alloc()相关函数或 new分配的内存指针。本参数必须是有效指针,且为起始指针,不能为内存中间位置的指针,

7、不能为 NULL,否则导致意外结果。返回值 正整数:分配内存的长度,单位字节。错误码 无线程安全 是原子操作 是其他说明1.2.5free(未完成)函数名称 free头文件 #include 库文件 无函数功能 释放调用 alloc()系列函数分配的内存。函数声明 void free (void * memblock);函数参数 memblock,输入:存放调用 alloc()系列函数分配的内存的内存指针,不能为无效内存指针,可以为 NULL。返回值 无错误码 无线程安全 是原子操作 是其他说明1.3 shell命令1.3.1_popen(未完成)函数名称 _popen头文件 #include

8、 库文件 无函数功能 另启动一个进程执行 shell命令,并建立一条管道,可以将 shell命令进程的标准输入或输出重定向到这条管道上,调用进程就可以通过这条管道读取 shell命令启动的进程的标准输出,或者也可以输出数据到该进程的标准输入。只能建立一条管道,一条管道只能重定向标准输入或者标准输出,不能同时重定向。函数声明 FILE * _popen (const char * command,const char * mode);command,输入:存放 shell命令字符串的指针,此命令对应的可执行文件必须是控制台程序,如果是窗口程序就会导致错误。例如:dir /a是控制台程序,但不能是

9、calc(calc 是计算器程序) 。如果要重定向串口程序,参考:http:/ NULL:失败,读取 errno变量查看错误码。其他:管道的文件描述符。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是原子操作 是其他说明 返回的文件描述符可以调用 fgets()、fputs()、fscanf()、fprintf()等函数来操作标准输入或标准输出。返回的文件描述符在使用完后必须调用 feof()函数关闭。shell命令启动的进程不会随调用进程的退出而退出,而是在执行完后自己退出。1.3.2system(未完成)函数名称 system头文件 #include 库文件 无函数功能

10、 执行一个 shell命令,调用/bin/sh -c shell命令来另启动一个进程执行,命令执行完后此函数才返回。执行命令期间,SIGCHLD 信号被锁定,SIGINT 和 SIGQUIT信号被忽略。函数声明 int system (const char * command);函数参数 command,输入:要执行的 shell命令的字符串。返回值 返回值 1:返回值说明。返回值 2:返回值说明。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是 或 否 或 未知,表示此函数多线程调用是否会产生影响原子操作 是 或 否 或 未知,表示此函数是否是单一操作,不是多个步骤的组合

11、其他说明 此函数在使用/bin/sh 启动执行 shell命令时,会丢掉调用进程的 setuid和 setgid位。1.3.3Sleep函数名称 Sleep头文件 #include 库文件 #pragma comment(lib, Kernel32.lib)函数功能 使当前线程暂停运行一段时间,暂停期间线程不占用 CPU资源。函数声明 VOID Sleep (DWORD dwMilliseconds);函数参数 dwMilliseconds,输入:存放要暂停运行多少毫秒的值,为 INFINITE宏表示无限暂停,为 0表示让出一次本线程的时间片给其他线程(用时很短) 。返回值 无错误码 无线程安

12、全 是原子操作 是其他说明 本函数的准确性会受到软硬件环境的影响。1.3.4Beep(未完成)函数名称 Beep头文件 #include 库文件 #pragma comment(lib, Kernel32.lib)函数功能 让计算机发出警笛声。函数声明 BOOL Beep (DWORD dwFreq,DWORD dwDuration);dwFreq,输入:存放警笛声的频率的值,频率越高声音越大,单位 Hz,范围 37 Hz至 32767 Hz。函数参数dwDuration,输入:存放警笛声的持续时间的值,单位毫秒,如果本参数为负数,表示不发出警笛声。返回值 非 0:成功。0:失败,调用 Get

13、LastError()函数查看错误码。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是原子操作 是其他说明1.3.5GetModuleFileName(未完成)函数名称 GetModuleFileName头文件 #include 库文件 #pragma comment(lib, Kernel32.lib)函数功能 获取指定模块的程序文件的绝对路径字符串,存放到指定的内存。函数声明 DWORD GetModuleFileName (HMODULE hModule,LPSTR lpFilename,DWORD nSize);hModule,输入:一个模块的句柄。如果是一个 DL

14、L模块的句柄,就获取 DLL库文件的绝对路径字符串;如果是一个应用程序的实例句柄,就获取该应用程序的可执行文件的绝对路径字符串。如果本参数为 NULL,表示获取本进程可执行文件的绝对路径字符串,在 DLL模块中调用也是如此。lpFilename,输出:存放绝对路径字符串的内存指针。函数参数nSize,输入:存放绝对路径字符串的内存的最大长度。返回值 正整数:如果绝对路径字符串的内存的最大长度足够大,就返回绝对路径字符串的长度,不包括0;如果不够大,就返回绝对路径字符串截断后的长度,包括0,并设置 ERROR_INSUFFICIENT_BUFFER错误码,但 winXP系统设置 ERROR_SU

15、CCESS错误码。0:失败,调用 GetLastError()函数查看错误码。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是原子操作 是其他说明 如果一个 DLL模块被多个进程加载,获取到的绝对路径字符串可能不一样。_pgmptr全局变量会在进程启动前自动初始化成本进程可执行文件的绝对路径字符串的内存指针。1.3.6SetCurrentDirectory(未完成)函数名称 SetCurrentDirectory头文件 #include 库文件 #pragma comment(lib, Kernel32.lib)函数功能 设置本程序的当前活动目录。函数声明 BOOL SetCurrentDirectory (LPCSTR lpPathName);函数参数 lpPathName,输入:存放当前活动目录字符串的内存指针,可以是相对或绝对目录。返回值 非 0:成功。0:失败,调用 GetLastError()函数查看错误码。错误码 EXXXX:错误码说明。EXXXX:错误码说明。线程安全 是 或 否 或 未知,表示此函数多线程调用是否会产生

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号