C和指针:标准函数库

整型函数

算术 <stdlib.h>
int abs( int value);
long int labs( long int value );
div_t div( int numerator, int denominator );
ldiv_t ldiv( long int numer,long int denom);

abs 函数返回它的参数的绝对值.

div 函数把它的第2个参数(分母)除以第1个参数(分子),产生商和余数,用一个 div_t结构返回.

随机数<stdlib.h>

伪随机数(pseudo-random number)

int rand( void);
void srand( unsigned int seed );

rand返回一个范围在0和RAND_MAX(至少为32,767)之间的伪随机数。当它重复调用时,

函数返回这个范围内的其他数。为了得到一个更小范围的伪随机数,首先把这个函数的返回值根据

所需范围的大小进行取模,然后通过加上或减去一个偏移量对它进行调整。

一个常用的技巧是使用每天的时间作为随机数产生器的种子(seed).

srand((unsigned int)time(0))
字符串转换 <stdlib.h>
int atoi( char const *string);
long int atol(char const *string);
long int strtol(char const *string, char **unused,int base);
unsigned long int strtoul( char const *string, char **unused, int base);

字符串转换为数

浮点型函数
三角函数 <math.h>
double sin( double angle);
double cos( double angle );
double tan( double angle);
double asin( double value);
double acos( double value );
double atan( double value );
double atan2( double x, double y);
双曲函数 <math.h>
double sinh( double angle);
double cosh( double angle);
double tanh( double angle);
对数和指数函数 <math.h>
double exp( double x);
double log( double x);
double log10( double x);
浮点表示形式 <math.h>
double frexp( double value, int *exponent );
double ldexp( double fraction, int exponent );
double modf( double value, double *ipart );
幂 <math.h>
double pow( double x, double y);
double sqrt( double x);
底数、顶数、绝对值和余数<math.h>
double floor( double x);
double ceil( double x);
double fabs( double x);
double fmod( double x, double y);

floor向下取整,ceil向上取整,fabs取绝对值,fmod 函数返回x除以y所产生的余数,这个除法的商被限制为一个整数值。

字符串转换 <stdlib.h>
double atof(char const *string);
double strtod(char const *string,char **unused );

如果任一函数的参数包含了前导的空白字符,这些字符将被忽略。函数随后把合法的字符转换为一个 double 值,忽略任何缀尾的非法字符。这两个函数都接受程序中所有浮点数字面值的书写形式.

日期和时间函数
clock_t clock(void);

可以在 main 函数刚开始执行时调用clock,然后把以后调用 clock 时所返回的值减去前面这个值,是处理器时钟滴答的次数。为了把这个值转换为秒,把它除以常量CLOCKS_PER_SEC。

......

时间和日期的转换函数用到再看。

非本地跳转<setjmp.h>

setjmp和longjmp函数提供了一种类似 goto 语句的机制,但它并不局限于一个函数的作用域之

内。这些函数常用于深层嵌套的函数调用链。如果在某个低层的函数中检测到一个错误,你可以立

即返回到顶层函数,不必向调用链中的每个中间层函数返回一个错误标志。

int setjmp( jmp_buf state );
void longjmp( jump_buf state, int value);

setjmp 函数:一个函数中调用 setjmp 并传递一个类型为 jmp_buf 的数组作为参数时,setjmp 将会保存当前程序执行环境的一个快照(包括处理器寄存器和程序计数器等状态信息)到这个 jmp_buf 数组中。

如果 setjmp 没有遇到其后的 longjmp 调用,则它会返回 0。

longjmp 函数:一旦在程序的其他部分遇到了 longjmp 调用,并且传入了之前 setjmp 初始化的 jmp_buf 数组以及一个非零值作为跳转值,那么程序的控制就会立即跳回到与那个 jmp_buf 关联的 setjmp 处。

当 setjmp 不是因为 longjmp 而返回时,它的返回值是 0。

当 setjmp 因为 longjmp 而返回时,它的返回值就是 longjmp 调用时传递的那个非零值。

可以通过检查 setjmp 返回值是否为 0 来区分这两种情况。

#include <stdio.h>
#include <setjmp.h>
jmp_buf buf;
void do_something() {// 如果有错误发生if (some_error_occurred) {longjmp(buf, 1); // 跳回到setjmp设置的点}
}
int main() {int ret;ret = setjmp(buf); // 保存当前环境if (ret == 0) {    // 第一次调用setjmp后,ret为0do_something(); // 执行一些操作} else {            // 如果不是0,说明是从longjmp回来的printf("Error occurred!\n");}return 0;
}
打印可变参数列表 <stdarg.h>
int vprintf( char const *format, va_list arg);
int vfprintf( FILE *stream, char const *format, va_list arg );
int vsprintf( char *buffer,char const *format, va_list arg);

这些函数与它们对应的标准函数基本相同,但它们使用了一个可变参数列表。

执行环境
终止执行 <stdlib.h>
void abort( void) 
void atexit( void(func)( void));
void exit( int status );

abort函数用于不正常地终止一个正在执行的程序。atexit 函数可以把一些函数注册为退出函数(exit function)。当程序将要正常终止时(或者由于调用exit,或者由于main 函数返回),退出函数将被调用,exit 函数用于正常终止程序。

断言<assert.h>
void assert( int expression);

当它被执行时,这个宏对表达式参数进行测试。如果它的值为假(零),它就向标准错误打印一条诊断信息并终止程序,包含表示式和源文件的名字以及断言所在的行号。如果表达式为真(非零),它不打印任何东西,程序继续执行,可以在编译时通过定义 NDEBUG消除所有的断言。

#define NDEBUG
环境 <stdlib.h>
char *getenv( char const *name);

getenv函数在列表中查找一个特定的名字,如果找到,返回一个指向其对应值的指针。程序不能修改返回的字符串。如果名字未找到,函数就返回一个NULL指针。

执行系统命令<stdlib.h>
void system( char const *command );

system函数把字符串参数传递给宿主操作系统,这样就可以作为一条命令,由系统的命令处理器执行。

排序和查找<stdlib.h>

qsort 函数在一个数组中以升序的方式对数据进行排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA一键下单新鲜到家同城生鲜物流系统小程序源码

一键下单&#xff0c;新鲜到家 —— 探索同城生鲜物流系统的魅力 &#x1f69a; 一键下单&#xff0c;轻松享受便捷生活 在这个快节奏的时代&#xff0c;谁不想在忙碌之余还能轻松享受美食呢&#xff1f;&#x1f60b; "一键下单新鲜到家"的同城生鲜物流系统&#…

HTML5中IndexedDB前端本地数据库

一、indexedDB为何替代了Web SQL Database&#xff1f; 跟小朋友的教育从来没有什么“赢在起跑线”这种说法一样&#xff0c;在前端领域&#xff0c;也不是哪来先出来哪个就在日后引领风骚的。 HTML5 indexedDB和Web SQL Database都是本地数据库数据存储&#xff0c;Web SQL Da…

关于axios同步获取数据的问题

axios同步获取数据 Axios介绍问题代码修改 总结 Axios介绍 Axios 是一个基于 promise 网络请求库&#xff0c;作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 X…

[SCOI2014] 方伯伯的玉米田(dp+树状数组维护行列)

https://www.luogu.com.cn/problem/P3287 显然每次操作的区间一定是一个后缀 我们直接令 d p ( x , i ) dp(x,i) dp(x,i) 表示最后一个数是 x x x&#xff08;加之后&#xff09;&#xff0c;加了 i i i 次的最长长度&#xff0c;转移显然 max ⁡ d p ( y ≤ x , j ≤ i …

鸿蒙开发相册获取一张或多张照片,预览

import { photoAccessHelper } from kit.MediaLibraryKit; import { image } from kit.ImageKit; import { fileIo as fs } from kit.CoreFileKit;Entry Component struct Index {State getAlbum: string 显示相册中的图片;State pixelsArray : Array<image.PixelMap> |…

python测试开发---vue的常见指令

在 Vue.js 中&#xff0c;指令是用于在模板中绑定数据和 DOM 元素之间关系的特殊属性。指令通常以 v- 开头&#xff0c;后面跟上指令的名字。了解和使用这些指令是掌握 Vue.js 的关键之一。下面是一些 Vue.js 中常见的指令及其用法。 1. v-bind 作用&#xff1a;动态地绑定 H…

Spring Boot 集成 Redisson 实现消息队列

包含组件内容 RedisQueue&#xff1a;消息队列监听标识RedisQueueInit&#xff1a;Redis队列监听器RedisQueueListener&#xff1a;Redis消息队列监听实现RedisQueueService&#xff1a;Redis消息队列服务工具 代码实现 RedisQueue import java.lang.annotation.ElementTyp…

第2章 方法

本书作者起初以为仅靠研究命令行工具和指标就能提高性能。他认为这样不对。他从头到尾读了一遍手册&#xff0c;看懂了缺页故障、上下文切换和其他各种系统指标的定义&#xff0c;但不知道如何处理它们&#xff1a;如何从发现信号到找到解决方案。 他注意到&#xff0c;每当出…

18、公司信贷管理|贷款额度的测算|贷款期限及其定价的设定逻辑!

银行在综合权衡贷款的第一还款来源和第二还款来源、风险和收益的基础上&#xff0c;应明确提出贷与不贷的意见。经调查审查同意的贷款&#xff0c;应提出最终的融资方案。 合理的融资方案既要有利于提升本行的竞争力&#xff0c;又要有利于控制贷款风险。完整的融资方案一般包…

计算机网络 --- 【2】计算机网络的组成、功能

目录 一、计算机网络的组成 1.1 从组成部分看 1.2 从工作方式看 1.3 从逻辑功能看 1.4 总结 二、计算机网络的功能 2.1 数据通信 2.2 资源共享​编辑 2.3 分布式处理 2.4 提高可靠性 2.5 负载均衡 一、计算机网络的组成 1.1 从组成部分看 我们举例分析计算机网络从…

【人工智能学习笔记】4_4 深度学习基础之生成对抗网络

生成对抗网络&#xff08;Generative Adversarial Network, GAN&#xff09; 一种深度学习模型&#xff0c;通过判别模型&#xff08;Discriminative Model&#xff09;和生成模型&#xff08;Generative Model&#xff09;的相互博弈学习&#xff0c;生成接近真实数据的数据分…

19章 泛型

1.修改程序清单19-1中的GenericStack类&#xff0c;使用数组而不是ArrayList来实现它。你应该在给栈添加新元素之前检查数组的大小如果数组满了&#xff0c;就创建一个新数组。该数组是当前数组大小的两倍&#xff0c;然后将当前数组的元素复制到新数组中。 public class Gene…

​ArcGIS Pro和ArcGIS的10大区别

本文来源&#xff1a;水经注GIS公众号 如果你经常使用ArcGIS 进行制图和分析&#xff0c;那么你一定听说过ArcGIS Pro&#xff0c;这款软件是Esri未来主打的一款桌面GIS软件&#xff0c;那么这款软件和ArcGIS相比有什么不同呢&#xff0c;这里为你列举了两款软件的10大区别&am…

QScopedPointer的了解

QT 智能指针 QPointer QScopedPointer QSharedPointer QWeakPointer QSharedDataPointer 隐式共享 显示共享-CSDN博客 本文摘录自上面的文章 其类似于C11中的unique_ptr&#xff0c;用于管理动态分配的对象的独占所有权&#xff0c;即同一时间只能有一个QScopedPointer指向该…

Docker 安装 Nacos 教程

Nacos 是一个易于使用的平台&#xff0c;用于服务发现和配置管理。它支持服务的注册与发现&#xff0c;同时提供动态配置管理功能。本文将介绍如何使用 Docker 快速安装 Nacos&#xff0c;并提供相应的配置文件 standalone-mysql-5.7.yaml 用于设置 Nacos 与 MySQL 的集成。 参…

文本分类场景下微调BERT

How to Fine-Tune BERT for Text Classification 论文《How to Fine-Tune BERT for Text Classification?》是2019年发表的一篇论文。这篇文章做了一些实验来分析了如何在文本分类场景下微调BERT&#xff0c;是后面网上讨论如何微调BERT时经常提到的论文。 结论与思路 先来看…

Vue跨域问题、Vue配置开发环境代理服务、集成Axios发送Ajax请求、集成vue-resource发送Ajax请求

目录 1. Ajax请求服务介绍2. axios的安装3. Vue跨域问题介绍和解决方案4. 使用vue-cli配置开发环境代理服务4.1 简单配置4.2 复杂配置4.3 二次封装 5. 集成vue-resource发送Ajax请求 1. Ajax请求服务介绍 xhr: new XHLHttpRequest().open()/send()。偏向底层JQuery: 对xhr进行…

Sklearn的datasets模块与自带数据集介绍

datasets 模块 用 dir() 函数查看 datasets 模块的所有属性和函数 import sklearn.datasets as datasets# 列出 sklearn.datasets 模块中的所有属性和函数 print(dir(datasets)) datasets 模块下的数据集有三种类型&#xff1a; &#xff08;1&#xff09;load系列的经典数…

Sqoop 数据迁移

Sqoop 数据迁移 一、Sqoop 概述二、Sqoop 优势三、Sqoop 的架构与工作机制四、Sqoop Import 流程五、Sqoop Export 流程六、Sqoop 安装部署6.1 下载解压6.2 修改 Sqoop 配置文件6.3 配置 Sqoop 环境变量6.4 添加 MySQL 驱动包6.5 测试运行 Sqoop6.5.1 查看Sqoop命令语法6.5.2 测…

Vue 中 计算属性与侦听属性的使用与介绍

Vue 中 计算属性与侦听属性的使用与介绍 计算属性 - computed 计算属性是一种特殊的属性&#xff0c;它依赖于其他属性&#xff0c;并返回一个新的值。当依赖的属性发生变化时&#xff0c;计算属性会重新求值。 计算属性的语法如下&#xff1a; computed: {// 计算属性名: …