C++ 第十二课 其它标准C函数
|
停止程序执行 |
|
|
当表达式非真,停止程序执行 |
|
|
当程序退出执行设定的程序 |
|
|
执行折半查找 |
|
|
停止程序执行 |
|
|
获取指定环境变量的值 |
|
|
从设定点执行程序 |
|
|
执行快速排序 |
|
|
向程序发送信号 |
|
|
返回一个随机数 |
|
|
设置程序执行点 |
|
|
将某函数设置成一个信号句柄 |
|
|
初始化随机数发生源 |
|
|
执行系统调用 |
|
|
使用可变长度参数列表 |
abort
语法:
| #include <stdlib.h> void abort( void ); |
功能: 终止程序的执行。返回值依赖于执行,可以通过返回值显示错误。
assert
语法:
| #include <assert.h> void assert( int exp ); |
功能:
宏assert()用于错误检测。如果表达式的结果为零,宏写错误信息到STDERR并退出程序执行。如果宏NDEBUG已经定义,宏assert()将被忽略。
相关主题:
abort()
atexit
语法:
| #include <stdlib.h> int atexit( void (*func)(void) ); |
功能:
当程序终止执行时,函数调用函数指针func所指向的函数。可以执行多重调用(至少32个),这些函数以其注册的倒序执行。执行成功返回零值,失败则返回非零值。
bsearch
语法:
| #include <stdlib.h> void *bsearch( const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); |
功能:
函数用折半查找法在从数组元素buf[0]到buf[num-1]
匹配参数key。如果函数compare
的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。数组buf
中的元素应以升序排列。函数bsearch()的返回值是指向匹配项,如果没有发现匹配项,返回NULL。
相关主题:
qsort().
exit
语法:
| #include <stdlib.h> void exit( int exit_code ); |
功能:终止程序的执行。参数exit_code
传递给返回值,通常零值表示正常结束,非零值表示应错误返回。
getenv
语法:
| #include <stdlib.h> char *getenv( const char *name ); |
功能:
函数返回环境变量name的值,非常依赖执行情况。如果无对应的环境变量name返回NULL。
相关主题:
system().
longjmp
语法:
| #include <setjmp.h> void longjmp( jmp_buf envbuf, int status ); |
功能:
函数使程序从前次对setjmp()的调用处继续执行。参数envbuf一般通过调用setjmp()设定。参数status
为setjmp()的返回值,用来指示不同地点longjmp()的执行.
status 不能设定为零。
相关主题:
setjmp().
qsort
语法:
| #include <stdlib.h> void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); |
功能:
对buf
指向的数据(包含num
项,每项的大小为size)进行快速排序。如果函数compare
的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。函数对buf
指向的数据按升序排序。
相关主题:
bsearch().
raise
语法:
| #include <signal.h> int raise( int signal ); |
功能:
函数对程序发送指定的信号signal.
一些信号:
|
信号 |
含义 |
|
SIGABRT |
终止错误 |
|
SIGFPE |
浮点错误 |
|
SIGILL |
无效指令 |
|
SIGINT |
用户输入 |
|
SIGSEGV |
非法内存存取 |
|
SIGTERM |
终止程序 |
返回零值为成功,非零为失败。
相关主题:
signal()
rand
语法:
| #include <stdlib.h> int rand( void ); |
功能:
函数返回一个在零到RAND_MAX
之间的伪随机整数。例如: srand( time(NULL)
); for( i = 0; i < 10; i++
) printf( "Random number #%d: %d\n", i,
rand() );
相关主题:
srand()
setjmp
语法:
| #include <setjmp.h> int setjmp( jmp_buf envbuf ); |
功能:
函数将系统栈保存于envbuf中,以供以后调用longjmp()。当第一次调用setjmp(),它的返回值为零。之后调用longjmp(),longjmp()的第二个参数即为setjmp()的返回值。是否有点疑问?请参阅longjmp().
相关主题:
longjmp()
signal
语法:
| #include <signal.h> void ( *signal( int signal, void (* func) (int)) ) (int); |
功能:
当函数收到参数signal所表示的信号,参数func
所指向的函数即被调用。func
可以被定制为信号句柄或以下的宏(定义在signal.h中):
|
宏 |
解释 |
|
SIG_DFL |
默认信号处理 |
|
SIG_IGN |
忽略信号 |
signal()返回先前为信号定义的函数地址,当错误发生返回SIG_ERR。
srand
语法:
| #include <stdlib.h> void srand( unsigned seed ); |
功能:
设置rand()随机序列种子。对于给定的种子seed,
rand()会反复产生特定的随机序列。
srand( time(NULL)
); for( i = 0; i < 10; i++
) printf( "Random number #%d: %d\n", i,
rand() );
system
语法:
| #include <stdlib.h> int system( const char *command ); |
功能:
函数返回给定的命令字符串command
进行系统调用。如果命令执行正确通常返回零值。如果command
为
NULL, system()将尝试是否有可用的命令解释器。
如果有返回非零值,否则返回零值。
相关主题:
exit(),
va_arg
语法:
| #include <stdarg.h> type va_arg( va_list argptr, type ); void va_end( va_list argptr ); void va_start( va_list argptr, last_parm ); |
功能:
宏va_arg()用于给函数传递可变长度的参数列表。
- 首先,必须调用va_start() 传递有效的参数列表va_list和函数强制的第一个参数。第一个参数代表将要传递的参数的个数。
- 其次,调用va_arg()传递参数列表va_list 和将被返回的参数的类型。va_arg()的返回值是当前的参数。
- 再次,对所有的参数重复调用va_arg()
- 最后,调用va_end()传递va_list对完成后的清除是必须的。
For example:
int sum( int, ... );
int main( void )
{
int answer = sum( 4, 4, 3, 2, 1 );
printf( "The answer is %d\n", answer );
return( 0 );
}
int sum( int num, ... ) {
int answer = 0;
va_list argptr;
va_start( argptr, num );
for( ; num > 0; num-- )
answer += va_arg( argptr, int );
va_end( argptr );
return( answer );
}
这段代码显示10,他们是4+3+2+1。
C++ 第十二课 其它标准C函数的更多相关文章
- NeHe OpenGL教程 第四十二课:多重视口
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Kali Linux Web 渗透测试— 第十二课-websploit
Kali Linux Web 渗透测试— 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试— 第十二课-websploit..................... ...
- NeHe OpenGL教程 第三十二课:拾取游戏
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第二十二课:凹凸映射
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- NeHe OpenGL教程 第十二课:显示列表
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- python 教程 第十二章、 标准库
第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1) sys模块 import sys if len(sys.argv) ...
- 斯坦福第十二课:支持向量机(Support Vector Machines)
12.1 优化目标 12.2 大边界的直观理解 12.3 数学背后的大边界分类(可选) 12.4 核函数 1 12.5 核函数 2 12.6 使用支持向量机 12.1 优化目标 到目前为 ...
- 如何用three.js(webgl)搭建3D粮仓、3D仓库、3D物联网设备监控-第十二课
序: 最近因为疫情,居家办公,索性翻翻之前的项目案例,总结总结. 这次疫情,深圳停摆,群众也挺恐慌的,封闭前一天,超市被抢购一空,虽然官方媒体一再强调,材米油盐蔬菜肉类管够,但是任然挡不住群众们的抢购 ...
- 第三十二课:JSDeferred的性能提速
大家如果看了前面两课,就知道Deferred的静态方法next(next_default)是用setTimeout实现的(有浏览器最小时钟间隔).但是实现这种异步操作,可以有很多种方法.JSDefer ...
随机推荐
- 推荐Java基础
(一) 基础篇 01. Java多线程系列--“基础篇”01之 基本概念 02. Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式 03. Java多线程系列--“基础篇”03之 T ...
- Android之Android apk动态加载机制的研究
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/22597587 (来自singwhatiwanna的csdn博客) 背景 问题 ...
- 低版本系统兼容的ActionBar(四)添加Tab+添加自定义的Tab视图+Fragment
在ActionBar中添加Tab是很有用的技巧.在support V7库的支持下,我们几乎可以用和之前一样的方式来添加Tab,对于Tab来说,我们可以和MenuItem一样,给他定义自己的视图.我这里 ...
- [Web 前端] CSS篇之 4. position 和 display 的取值和各自的意思和用法
讲一讲CSS的position/float/display都有哪些取值,它们相互叠加时的行为都是什么? 列出display的值,说明他们的作用.position的值, relative和absolu ...
- [DEFCON全球黑客大会] CTF(Capture The Flag)
copy : https://baike.baidu.com/item/ctf/9548546?fr=aladdin CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的 ...
- smb与samba
为了使Windows 主机间的资源能够共享,微软于1980年开发了SMB(Server Message Block)通信协议,并通过SMB通信协议,使网络上各台主机之间能够共享文件.打印机等资源.目前 ...
- [leetcode]Minimum Path Sum @ Python
原题地址:https://oj.leetcode.com/problems/minimum-path-sum/ 题意: Given a m x n grid filled with non-negat ...
- 领扣-5 最长回文子串 Longest Palindromic Substring MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 使用LeakCanary检测内存泄露 翻译 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- vue2.0路由-适合刚接触新手简单理解
vue路由:vue-router vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并 ...