《C/C++函数与算法》 |
版本 |
作者 |
参与者 |
完成日期 |
备注 |
YanlzCC++_Algorithm_V01_1.0 |
严立钻 |
|
2020.01.17 |
|
|
|
|
|
|
++++“C/C++函数与算法”:是对“C++C铸就生存利器”的综合探索;C/C++作为万能语言,可以开发嵌入式、物联网,也可以开发游戏(Cocos2dx、UE4);
++++“C/C++函数与算法”:定位在一个科普类知识,了解C/C++相关库和算法!
#第一篇:C语言函数
#第二篇:C++输入/输出
#第三篇:标准容器
#第四篇:算法
#第五篇:立钻哥哥带您C/C++编程
#第一篇:C语言函数 |
++++A1、ctype.h
++++A2、stdio.h
++++A3、string.h
++++A4、stdlib.h
++++A5、math.h
++++A6、conio.h
++++A7、graphics.h
++++A8、stdarg.h
++++A9、time.h
++++A10、dir.h
++++A11、立钻哥哥带您了解其他C函数库
++A1、ctype.h |
#注意:C++标准库也同样包含C标准库,使用时在库名前加c,例如,C标准库中的ctype.h在C++中则变为cctype; |
++A1.1、字符测试函数 |
++++A1.1.1、isalnum
++++A1.1.2、isalpha
++++A1.1.3、isascii
++++A1.1.4、iscntrl
++++A1.1.5、isdigit
++++A1.1.6、isgraph
++++A1.1.7、islower
++++A1.1.8、isprint
++++A1.1.9、ispunct
++++A1.1.10、isspace
++++A1.1.11、isxdigit
++++A1.1.1、isalnum |
++++立钻哥哥:isalnum函数是判断字符是否是英文字母或数字字符;
int isalnum(int ch); |
++++A1.1.2、isalpha |
++++立钻哥哥:函数isalpha的作用是判断ch是否是英文字母;
int isalpha(int ch); |
++++A1.1.3、isascii |
++++立钻哥哥:函数isascii的作用是判断ch的ASCII码是否位于0~127之间;
int isascii(int ch); |
++++A1.1.4、iscntrl |
++++立钻哥哥:函数iscntrl的作用是判断ch是否是控制字符,即ASCII码是否位于0~31之间或等于0x7f(Delete键的ASCII码);
int iscntrl(int ch); |
++++A1.1.5、isdigit |
++++立钻哥哥:函数isdigit的作用是判断ch是否是数字字符,即是否是’0’~’9’之间的字符;
int isdigit(int ch); |
++++A1.1.6、isgraph |
++++立钻哥哥:函数isgraph的作用是判断ch是否是除了空格外的可打印字符;
int isgraph(int ch); |
++++A1.1.7、islower |
++++立钻哥哥:函数islower的作用是判断ch是否是小写英文字母;
int islower(int ch); |
++++A1.1.8、isprint |
++++立钻哥哥:函数isprint的作用是判断ch是否是可打印字符(包括空格符);
int isprint(int ch); |
++++A1.1.9、ispunct |
++++立钻哥哥:函数ispunct的作用是判断ch是否是标点符号;
int ispunct(int ch); |
++++A1.1.10、isspace |
++++立钻哥哥:函数isspace的作用是判断ch是否是空白符,空白符包括空格符、水平制表符、回车符等;
int isspace(int ch); |
++++A1.1.11、isxdigit |
++++立钻哥哥:函数isxdigit的作用是判断ch是否是十六进制数字0~9和A~F(a~f)对应的字符;
int isxdigit(int ch); |
++A1.2、字符转换函数 |
++++A1.2.1、tolower
++++A1.2.2、toupper
++++A1.2.3、toascii
++++A1.2.1、tolower |
++++立钻哥哥:如果ch是’A’~’Z’之间的大写英文字母,函数tolower会将ch转换为’a’~’z’之间的小写英文字母;
int tolower(int ch); |
++++A1.2.2、toupper |
++++立钻哥哥:函数toupper的作用是将小写英文字母’a’~’z’转换为大写英文字母’A’~’Z’;
int toupper(int ch); |
++++A1.2.3、toascii |
++++立钻哥哥:函数toascii的作用是将字符转换为相应的ASCII码;
int toascii(int ch); |
++A2、stdio.h |
++++A2.1、字符输入/输出函数
++++A2.2、格式化输入/输出函数
++++A2.3、文件输入/输出函数
++++A2.4、文件定位函数
++++A2.5、文件存取操作函数
++++A2.6、文件错误控制函数
++++A2.7、立钻哥哥带您stdio.h的综合应用
++A2.1、字符输入/输出函数 |
++++A2.1.1、getch/getche
++++A2.1.2、getchar
++++A2.1.3、gets
++++A2.1.4、putchar
++++A2.1.5、puts
++++A2.1.1、getch/getche |
++++立钻哥哥:函数getch和函数getche的作用都是从键盘接受输入的字符;
int getch();int getche(); |
++++A2.1.2、getchar |
++++立钻哥哥:函数getchar从键盘接受输入的字符并显示在屏幕上;
int getchar(); |
++++A2.1.3、gets |
++++立钻哥哥:函数gets接受用户从键盘输入的一个字符串并存放到str指向的字符数组中;
char *gets(int *str); |
++++A2.1.4、putchar |
++++立钻哥哥:函数putchar的作用是在屏幕上输出一个字符ch;
int putchar(int ch); |
++++A2.1.5、puts |
++++立钻哥哥:函数puts的作用是在屏幕上输出多个字符串;
int puts(const char *str); |
++A2.2、格式化输入/输出函数 |
++++A2.2.1、printf
++++A2.2.2、scanf
++++A2.2.3、sprintf
++++A2.2.4、sscanf
++++A2.2.5、vprintf
++++A2.2.6、vscanf
++++A2.2.1、printf |
++++立钻哥哥:函数printf的作用是由format指定的格式控制下,将argument输出到屏幕上;
int printf(const char *format[,argument]...); |
++++A2.2.2、scanf |
++++立钻哥哥:函数scanf的作用是从键盘接受输入的数据,并将其转换为相应的格式;
int scanf(const char *format[,argument]); |
++++A2.2.3、sprintf |
++++立钻哥哥:函数sprintf的作用是将format指向的格式化数据输出到buffer指向的数组中;
int sprintf(char *buffer, const char *format[,argument]); |
++++A2.2.4、sscanf |
++++立钻哥哥:函数sscanf的作用是从buffer指向的字符串中读取format指向格式的数据,存储到argument中;函数sscanf与函数scanf的作用类似;
int sscanf(char *buffer, const char *format[,argument]); |
++++A2.2.5、vprintf |
++++立钻哥哥:函数vprintf的作用是在屏幕上输出格式化变长参数列表中的数据;
int vprintf(const char *format, va_list arg_ptr); |
++++A2.2.6、vscanf |
++++立钻哥哥:函数vscanf从键盘读取格式化数据;
int vscanf(const char *format, va_list arg); |
++A2.3、文件输入/输出函数 |
++++A2.3.1、fgetc/getc
++++A2.3.2、fgets
++++A2.3.3、fprintf
++++A2.3.4、fputc/putc
++++A2.3.5、fputs
++++A2.3.6、fread
++++A2.3.7、fscanf
++++A2.3.8、vfprintf
++++A2.3.9、vfscanf
++++A2.3.10、fwrite
++++A2.3.1、fgetc/getc |
++++立钻哥哥:函数fgetc和函数getc接受stream指向的文件的当前位置的字符,并将文件位置指示器移动到下一个位置;fgetc函数与getc函数作用相同;
int fgetc(FILE *stream); |
++++A2.3.2、fgets |
++++立钻哥哥:函数fgets从stream指向的文件中读取至多num-1个字符,并存入str指向的字符数组中;在字符被读入到数组后,自动在字符数组的最后添加一个空字符表示字符串的结束;
char *fgets(char *str, int num, FILE *stream); |
++++A2.3.3、fprintf |
++++立钻哥哥:函数fprintf将格式化数据写入到stream指向的文件中;
int fprintf(FILE *stream, char *format[,argument]...) |
++++A2.3.4、fputc/putc |
++++立钻哥哥:函数fputc和函数putc的作用都是输出一个字符到指定的文件中;
int fputc(int ch, FILE *stream); |
++++A2.3.5、fputs |
++++立钻哥哥:函数fputs的作用是将str指向的字符串输出到stream指向的文件中;
int fputs(const char *str, FILE *stream); |
++++A2.3.6、fread |
++++立钻哥哥:函数fread从stream指向的文件中读取count个字段,每个字段的大小为size字节,将其存放到buffer指向的字符数组中;
int fread(void *buffer, int size, int count, FILE *stream); |
++++A2.3.7、fscanf |
++++立钻哥哥:函数fscanf从stream指向的文件中读取由format格式化的数据,并存入到参数argument列表中;
int fscanf(FILE *stream, const char *format[,argument]); |
++++A2.3.8、vfprintf |
++++立钻哥哥:函数vfprintf根据format字符串格式化数据,并将该数据输出到stream指向的文件中;
int vfprintf(FILE *stream, const char *format, va_list arg); |
++++A2.3.9、vfscanf |
++++立钻哥哥:函数vfscanf从stream指定的文件中读取格式化数据到可变参数列表arg_list中;
int vfscanf(FILE *stream, const char *format, va_list arg_list); |
++++A2.3.10、fwrite |
++++立钻哥哥:函数fwrite将buffer指向的数组中的字符写入到stream指定的文件中;写入数据的长度是count*size;
int fwrite(void *buffer, int size, int count, FILE *stream); |
++A2.4、文件定位函数 |
++++A2.4.1、fseek
++++A2.4.2、ftell
++++A2.4.3、rewind
++++A2.4.1、fseek |
++++立钻哥哥:函数fseek的作用是根据offset和origin设置stream指向的文件位置指针的位置;
int fseek(FILE *stream, long int offset, int origin); |
++++A2.4.2、ftell |
++++立钻哥哥:函数ftell的作用是得到文件位置指针的当前值;这个值是以文件开头算起的字节数;
long int ftell(FILE *stream); |
++++A2.4.3、rewind |
++++立钻哥哥:函数rewind的作用是将文件位置指针移动到文件的开始位置;另外,函数rewind还有清除错误标志和清除文件结束符的作用;
void rewind(FILE *stream); |
++A2.5、文件存取操作函数 |
++++A2.5.1、fclose
++++A2.5.2、fflush
++++A2.5.3、fopen
++++A2.5.4、remove
++++A2.5.5、rename
++++A2.5.1、fclose |
++++立钻哥哥:函数fclose的作用是关闭stream指定的文件,并将缓冲区的内容全部写入该文件;
int fclose(FILE *stream); |
++++A2.5.2、fflush |
++++立钻哥哥:函数fflush的作用是将缓冲区的内容写入到stream指定的文件中;如果stream指向输入文件,则缓冲区的内容将清除;
int fflush(FILE *stream); |
++++A2.5.3、fopen |
++++立钻哥哥:函数fopen的作用是打开由filename指向的文件,具体的操作类型由mode定义;
FILE *fopen(const char *filename, const char *mode); |
++++A2.5.4、remove |
++++立钻哥哥:函数remove的作用是删除由filename指向的文件;
int remove(const char *filename); |
++++A2.5.5、rename |
++++立钻哥哥:函数rename的作用是将旧文件名(oldname)改为新文件名(newname);
int rename(const char *oldname, const char *newname); |
++A2.6、文件错误控制函数 |
++++A2.6.1、clearerr
++++A2.6.2、feof
++++A2.6.3、ferror
++++A2.6.1、clearerr |
++++立钻哥哥:函数clearerr的作用是将stream指向的文件的错误标记重新设置为0(即关掉错误标记),文件结束指示器也被重置;
void clearerr(FILE *stream); |
++++A2.6.2、feof |
++++立钻哥哥:函数feof的作用是检查文件位置指针是否到了文件末尾,如果到了文件末尾,则返回非0值;否则返回0;
int feof(FILE *stream); |
++++A2.6.3、ferror |
++++立钻哥哥:函数ferror的作用是检查stream指向的文件在操作过程中是否出现了错误;
int ferror(FILE *stream); |
++A3、string.h |
++A3.1、字符串比较函数 |
++++A3.1.1、memcmp/memicmp
++++A3.1.2、strcmp/stricmp
++++A3.1.3、strncmp/strnicmp
++++A3.1.1、memcmp/memicmp |
++++立钻哥哥:函数memcmp和函数memicmp的作用是比较buf1指向的前count个字符和buf2指向的前count个字符的大小;
int memcmp(const void *buf1, const void *buf2, unsigned count);int memicmp(const void *buf1, const void *buf2, unsigned count); |
++++A3.1.2、strcmp/stricmp |
++++立钻哥哥:函数strcmp和函数stricmp的作用都是比较str1和str2两个字符串;从第1个字符串开始比较,直到遇到字符不相等或到达字符串末尾为止;
int strcmp(const char *str1, const char *str2);int stricmp(const char *str1, const char *str2); |
++++A3.1.3、strncmp/strnicmp |
++++立钻哥哥:函数strncmp和函数strnicmp都是比较长度不超过count的两个字符串的大小;如果两个字符串相等,则继续比较下面的字符,直到两个字符不相等、到达字符串末尾或count个字符比较完毕,才停止比较;
int strncmp(const char *str1, const char *str2, int count);int strnicmp(const char *str1, const char *str2, int count); |
++A3.2、字符串复制函数 |
++++A3.2.1、memcpy
++++A3.2.2、memmove
++++A3.2.3、strcpy
++++A3.2.4、strncpy
++++A3.2.1、memcpy |
++++立钻哥哥:函数memcpy的作用是从source指向的数组中复制count个字节到dest指向的数组中;
void *memcpy(void *dest, const void *source, unsigned count); |
++++A3.2.2、memmove |
++++立钻哥哥:函数memmove的作用是从source指向的数组中复制count个字节到dest指向的数组中;
void *memmove(void *dest, const void *source, unsigned count); |
++++A3.2.3、strcpy |
++++立钻哥哥:函数strcpy的作用是将source指向的字符串复制到dest指向的数组中,包括字符串的终结符;
char *strcpy(char *dest, const char *source); |
++++A3.2.4、strncpy |
++++立钻哥哥:函数strncpy的作用是将source指向的前count个字符拷贝到dest字符数组中,如果count小于或等于source的长度,则空字符自动添加到dest末尾;如果count大于source的长度,则空字符被添加到dest的第count位置;
char *strncpy(char *dest, const char *source, unsigned count); |
++A3.3、字符串连接函数 |
++++A3.3.1、strcat
++++A3.3.2、strncat
++++A3.3.1、strcat |
++++立钻哥哥:函数strcat的作用是将source指向的字符串连接到dest指向的字符串的末尾,并以空字符结束dest;dest指向的字符串最后的空字符被source的第1个字符覆盖掉;
char *strcat(char *dest, const char *source); |
++++A3.3.2、strncat |
++++立钻哥哥:函数strncat的作用是将source指向的前count个字符连接到dest数组中,包括空字符;如果source指向的字符串长度小于count,则将source的字符串连接到dest末尾;
char *strncat(char *dest, char *source, unsigned count); |
++A3.4、字符串查找函数 |
++++A3.4.1、memchr
++++A3.4.2、strchr
++++A3.4.3、strstr
++++A3.4.4、strtok
++++A3.4.1、memchr |
++++立钻哥哥:函数memchr的作用是在由buffer指向的前count个字节中查找第1次遇到的值为c的数据(字符);如果找到c或前count字节扫描完毕,则查找结束;
void *memchr(const void *buffer, int c, unsigned count); |
++++A3.4.2、strchr |
++++立钻哥哥:函数strchr的作用是在由str指向的字符串中查找字符第一次出现的字符ch;
char *strchr(const char *str, int ch); |
++++A3.4.3、strstr |
++++立钻哥哥:函数strstr的作用是在由str1指向的字符串中查找第1次出现字符串str2;
char *strstr(const char *str1, const char *str2); |
++++A3.4.4、strtok |
++++立钻哥哥:函数strtok的作用是利用delimiters字符串中的字符分解字符串str;
char *strtok(char *str, const char *delimiters); |
++A3.5、字符串转换函数 |
++++A3.5.1、strlwr
++++A3.5.2、strrev
++++A3.5.3、strupr
++++A3.5.1、strlwr |
++++立钻哥哥:函数strlwr的作用是将str指向的字符串中的大写字母转换为小写字母;
char *strlwr(char *str); |
++++A3.5.2、strrev |
++++立钻哥哥:函数strrev的作用是将str指向的字符串中字符颠倒过来;
char *strrev(char *str); |
++++A3.5.3、strupr |
++++立钻哥哥:函数strupr的作用是将str指向的字符串中的小写字母转换为大写字母;
char *strupr(char *str); |
++A3.6、立钻哥哥整理的其他函数 |
++++A3.6.1、memset
++++A3.6.2、strlen
++++A3.6.1、memset |
++++立钻哥哥:函数memset的作用是将buf指向的字符串中的前count个字节都设置为value;
void *memset(void *buf, int value, unsigned count); |
++++A3.6.2、strlen |
++++立钻哥哥:函数strlen的作用是求以空字符结尾的字符串str的长度;
unsigned strlen(const char *str); |
++A4、stdlib.h |
++A4.1、字符串转换函数 |
++++A4.1.1、atof
++++A4.1.2、atoi
++++A4.1.3、atol
++++A4.1.4、itoa
++++A4.1.5、ltoa
++++A4.1.1、atof |
++++立钻哥哥:函数atof的作用是将str指向的字符串转换为双精度浮点数;
double atof(const char *str); |
++++A4.1.2、atoi |
++++立钻哥哥:函数atoi的作用是将字符串str转换为整型数值;
int atoi(const char *str); |
++++A4.1.3、atol |
++++立钻哥哥:函数atol的作用是将字符串str转换为对应的长整型数据;
long int atol(const char *str); |
++++A4.1.4、itoa |
++++立钻哥哥:函数itoa的作用是将整数value转换为相应的字符串str;其中,base表示要转换的进制;
char *itoa(int value, char *str, int base); |
++++A4.1.5、ltoa |
++++立钻哥哥:函数ltoa的作用是将长整型数value转换为相应的字符串str;其中,base表示要转换的进制;
char *ltoa(long value, char *str, int base); |
++A4.2、动态内存管理函数 |
++++A4.2.1、calloc
++++A4.2.2、free
++++A4.2.3、malloc
++++A4.2.4、realloc
++++A4.2.5、立钻哥哥带您“动态内存管理函数”实战
++++A4.2.1、calloc |
++++立钻哥哥:函数calloc的作用是分配一块内存空间,内存空间的大小是num*size;其中,num表示每个元素的个数,size表示每个元素所占用的字节数;
void *calloc(unsigned num, unsigned size); |
++++A4.2.2、free |
++++立钻哥哥:函数free的作用是释放ptr指向的内存空间,以使这些内存成为可用空间再次被分配;
void *free(void *ptr); |
++++A4.2.3、malloc |
++++立钻哥哥:函数malloc的作用是动态分配一块大小为size字节的内存空间;
void *malloc(unsigned size); |
++++A4.2.4、realloc |
++++立钻哥哥:函数realloc的作用是将ptr指向的已分配内存空间的大小变为newsize字节,newsize可以大于,也可以小于原来的内存大小;
void *realloc(void *ptr, unsigned newsize); |
++A4.3、随机数生成函数 |
++++A4.3.1、rand
++++A4.3.2、random/randomize
++++A4.3.3、srand
++++A4.3.1、rand |
++++立钻哥哥:函数rand的作用是产生0~RAND_MAX之间的整数;
int rand(); |
++++A4.3.2、random/randomize |
++++立钻哥哥:函数random的作用是产生0~num之间的整数;函数randomize的作用是初始化随机数发生器,使random函数每次产生不同的随机数;
int random(int num);void randomize(); |
++++A4.3.3、srand |
++++立钻哥哥:函数srand的作用是利用参数seed初始化随机数发生器;常常与rand函数配合使用;
void srand(unsigned seed); |
++A4.4、查找和排序函数 |
++++A4.4.1、bsearch
++++A4.4.2、qsort
++++A4.4.3、立钻哥哥带您“查找和排序函数”实战
++++A4.4.1、bsearch |
++++立钻哥哥:函数bsearch的作用是在由base指向的数组中进行折半查找,返回找到的关键字为key的元素的指针;其中,num是元素的个数,size是每个元素所占的字节数;
void *bsearch(const void *key, const void *base, unsigned num, unsigned size, int (*compare)(const void *, const void *)); |
++++A4.4.2、qsort |
++++立钻哥哥:函数qsort的作用是使用快速排序算法对base指向的数组进行排序;
void qsort(void *base, unsigned num, unsigned size, int(*compare)(const void *, const void *)); |
++++A4.4.3、立钻哥哥带您“查找和排序函数”实战 |
//立钻哥哥:随机数生成函数和查找排序函数综合应用实战 //实战需求:利用随机数生成函数初始化数组,并利用qsort函数对数组中的元素分别进行升序排列和降序排列,最后利用bsearch函数查找数组中的元素 #include <stdio.h> #include <stdlib.h>
#define N 10
//随机产生范围为[start, end]的元素序列 void InitArray(int b[], int start, int end){ int i, j, flag; srand(time(NULL)); ... ... }
//比较两个元素的大小(升序) int ascending(const void *a, const void *b){ return (*(int*)a - *(int*)b); }
//比较两个元素的大小(降序) int descending(const void *a, const void *b){ return (*(int*)b - *(int*)a); }
void main() { int a[N], key; int *p;
InitArray(a, N, 100, 200);
qsort(a, N, sizeof(int), ascending);
p = (int*)bsearch(&key, a, N, sizeof(int), ascending);
... ... } ++++说明:这里立钻哥哥只是提供了一些思路,还有相关细节就不再赘述了; |
++A4.5、过程控制函数 |
++++A4.5.1、abort
++++A4.5.2、exit
++++A4.5.3、system
++++A4.5.1、abort |
++++立钻哥哥:函数abort的作用是以非正常的方式终止当前的进程;
void abort(); |
++++A4.5.2、exit |
++++立钻哥哥:函数exit的作用是使程序正常终止;
void exit(int status); |
++++A4.5.3、system |
++++立钻哥哥:函数system的作用是在DOS或cmd.exe中执行command命令;
int system(const char *command); |
++A5、math.h |
++A5.1、三角函数 |
++++A5.1.1、cos
++++A5.1.2、sin
++++A5.1.3、tan
++++A5.1.4、acos
++++A5.1.5、asin
++++A5.1.6、atan
++++A5.1.1、cos |
++++立钻哥哥:函数cos的作用是求x的余弦值;
double cos(double x); |
++++A5.1.2、sin |
++++立钻哥哥:函数sin的作用是求x的正弦值;
double sin(double x); |
++++A5.1.3、tan |
++++立钻哥哥:函数tan的作用是求x的正切值;
double tan(double x); |
++++A5.1.4、acos |
++++立钻哥哥:函数acos的作用是求x的反余弦值;
double acos(double x); |
++++A5.1.5、asin |
++++立钻哥哥:函数asin的作用是求x的反正弦值;
double asin(double x); |
++++A5.1.6、atan |
++++立钻哥哥:函数atan的作用是求x的反正切值;
double atan(double x); |
++A5.2、指数和对数函数 |
++++A5.2.1、exp |
++++立钻哥哥:函数exp的作用是求以自然数e为底的指数即e.x的值;
double exp(double x); |
++++A5.2.2、log |
++++立钻哥哥:函数log的作用是求x的自然对数;
double log(double x); |
++++A5.2.3、log10 |
++++立钻哥哥:函数log10的作用是返回x的对数值;
double log10(double x); |
++A5.3、幂指数和开方函数 |
++++A5.3.1、pow |
++++立钻哥哥:函数pow的作用是求以base为底exp为指数的base.exp的值;
double pow(double base, double exp); |
++++A5.3.2、pow10 |
++++立钻哥哥:函数pow10的作用是计算10.exp的值;
double pow10(int exp); |
++++A5.3.3、sqrt |
++++立钻哥哥:函数sqrt的作用是求x的平方根;
double sqrt(double x); |
++A5.4、绝对值函数 |
++++A5.4.1、abs |
++++立钻哥哥:函数abs的作用是求x的绝对值;
int abs(int x); |
++++A5.4.2、fabs |
++++立钻哥哥:函数fabs的作用是求浮点数x的绝对值;
double fabs(double x); |
++++A5.4.3、labs |
++++立钻哥哥:函数labs的作用是求x的绝对值;
long labs(long x); |
++A5.5、立钻哥哥整理的其他数学函数 |
++++A5.5.1、floor |
++++立钻哥哥:函数floor的作用是求不大于x的最大整数;
double floor(double x); |
++++A5.5.2、fmod |
++++立钻哥哥:函数fmod的作用是求x/y的余数;
double fmod(double x, double y); |
++++A5.5.3、frexp |
++++立钻哥哥:函数frexp的作用是将x分解为一个从0.5到小于1之间的浮点数和一个整型数;其中,前者称为尾数,由函数返回;后者称为指数,存放在变量exp中;
double frexp(double x, int *exp); |
++++A5.5.4、hypot |
++++立钻哥哥:函数hypot的作用是由直角边x和y得到斜边的长度;
double hypot(double x, double y); |
++++A5.5.5、modf |
++++立钻哥哥:函数modf的作用是将x分解为两个部分:整数部分和小数部分;其中,整数部分存入*intpartptr中,小数部分通过函数返回;
double modf(double x, double *intpart); |
++++A5.5.6、poly |
++++立钻哥哥:函数poly的作用是根据数组c提供的多项式系数,求x的n次多项式的值;
double poly(double x, int n, double c[]); |
++A6、conio.h |
====>立钻哥哥后期还会推出《Linux C》,这里将带大家熟悉一些比较通用性的C库;请关注“C++C铸就生存利器”分类,这里会不断推出基于C/C++技术的应用,比如Linux系统编程、C++游戏服务器等;
++A7、graphics.h |
++++立钻哥哥:这个graphics.h库给我们一个信息:C/C++是可以开发图形的,如果您不熟悉Shader编程(GLSL、HLSL、Cg),可以利用这个库在TuboC开发环境下试一下呢,如果您还是想挑战一下Shader编程,您可以查看“shader编程”分类,这里介绍了Shader编程相关技术;
++A8、stdarg.h |
++++A8.1、va_arg |
++++立钻哥哥:宏va_arg的作用是返回argptr指向的可变参数列表中的参数,并使argptr指向可变参数列表中的下一个参数;
type va_arg(va_list argptr, type); |
++++[参数argptr]:指向可变参数列表中的参数,类型为va_list,va_list是控制可变参数信息的类型;
++++[参数type]:类型名,表示要提取的参数类型;
++++[函数返回值]:该宏返回argptr指向的可变参数列表中的参数的参数,参数类型为argptr指向的类型;
++++A8.2、va_end |
++++立钻哥哥:宏va_end的作用是终止使用可变参数列表argptr;
void va_end(va_list argptr); |
++++A8.3、va_start |
++++立钻哥哥:宏va_start的作用是初始化可变参数列表对象argptr,使argptr指向可变参数列表中的第一个可选参数;prev_param是位于第一个可变参数之前的固定参数;
void va_start(va_list argptr, prev_param); |
#include <stdio.h> #include <stdarg.h>
void MyAverage(int amount, ...) { int i; double val, total = 0.0; va_list arg;
va_start(arg, amount); for(i = 0, i < amount; i++){ val = va_arg(arg, double); total += val; } va_end(arg); }
void Main() { MyAverage(3, 12.0, 20.0, 44.0); } |
++A9、time.h |
++A9.1、时间操作函数 |
++++A9.1.1、clock |
++++立钻哥哥:函数clock的作用是返回CPU计时单元;
long clock(); |
//立钻哥哥:利用clock函数进行倒计时 void MyWait(int second) { clock_t end; end = clock() + second * CLOCKS_PER_SEC;
while(clock() < end){ } } |
++++A9.1.2、difftime |
++++立钻哥哥:函数difftime的作用是返回time1到time2所经过的秒数;
double difftime(time_t time2, time_t time1); |
++++A9.1.3、time |
++++立钻哥哥:函数time的作用是获取以秒为单位,格林尼治时间1970年1月1日00:00:00开始计时的当前时间值,并将它存放在timer所指向的内存单元中;
time_t time(time_t *timer); |
++A9.2、时间格式转换函数 |
++++A9.2.1、asctime |
++++立钻哥哥:函数asctime的作用是把以struct tm格式表示的时间转换为以下字符串形式:星期 月 日 小时:分:秒 年;
char *asctime(struct tm *timeptr); |
++++A9.2.2、ctime |
++++立钻哥哥:函数ctime的作用是将参数timer表示的时间转换为下列形式的字符串:星期 月 日 小时:分:秒 年;
char *ctime(time_t *timer); |
++++A9.2.3、gmtime |
++++立钻哥哥:函数gmtime的作用是将time_t表示的时间转换为格林尼治时间,函数的返回值是一个指向struct tm时间结构的指针;
struct tm *gmtime(const time_t *timer); |
++++A9.2.4、localtime |
++++立钻哥哥:函数localtime的作用是返回指向struct tm时间结构的指针;
struct tm *localtime(const time_t *timer); |
++++A9.2.5、mktime |
++++立钻哥哥:函数mktime的作用是将参数timeptr所指向的struct tm结构数据转换为从公元1970年1月1日0时0分0秒开始到现在所经过的秒数;
time_t mktime(struct tm *timeptr); |
++++A9.2.6、strftime |
++++立钻哥哥:函数strftime的作用是将格式字符串存放在ptr指向的内存单元中;其中,maxsize表示字符的最大个数;format表示格式控制,与printf函数中的含义相同;timeptr表示要格式化的struct tm结构,包含日期时间信息;
size_t strftime(char *ptr, size_t maxsize, const char *format, const struct tm *timeptr); |
++A10、dir.h |
++++Tips:钻哥说了,C++没有兼容的C库可以先不拓展,呵呵,我们要把有限的时间和精力放在通用性的技术上嘛!
++++立钻哥哥:对磁盘目录和文件等的操作,我们会拓展为《LinuxC函数与算法》进行学习;
++A11、立钻哥哥带您了解其他C函数库 |
++++A11.1、abort |
++++立钻哥哥:函数abort的作用是使程序立即终止运行;
void abort(); |
++++A11.2、exit |
++++立钻哥哥:函数exit的作用是使程序立即终止运行;
void exit(int status); |
++++A11.3、sleep |
++++立钻哥哥:函数sleep的作用是使程序暂停运行time秒时间;
void sleep(unsigned time); |
++++A11.4、system |
++++立钻哥哥:函数system的作用是在C程序中执行DOS系统命令;
int system(char *command); |
++++A11.5、bioskey |
++++立钻哥哥:函数bioskey的作用是判断键盘上的某个键是否被按下;
int bioskey(int cmd); |
++++A11.6、geninterrupt |
++++立钻哥哥:函数geninterrupt的作用是产生一个软中断;
void geninterrupt(int intr_num); |
++++A11.7、int86 |
++++立钻哥哥:函数int86的作用是执行int_num指定的软中断;其中,in_regs是输入参数,out_regs是输出参数;
int int86(int int_num, union REGS *in_regs, union REGS *out_regs); |
【XR游戏开发QQ群:784477094】
立钻哥哥推荐的拓展学习链接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846
++++HTC_VIVE开发基础:https://blog.csdn.net/VRunSoftYanlz/article/details/81989970
++++Oculus杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82469850
++++Oculus安装使用:https://blog.csdn.net/VRunSoftYanlz/article/details/82718982
++++Unity+SteamVR=>VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88809370
++++Unity减少VR晕眩症:https://blog.csdn.net/VRunSoftYanlz/article/details/89115518
++++SteamVR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86484254
++++SteamVR脚本功能分析:https://blog.csdn.net/VRunSoftYanlz/article/details/86531480
++++SteamVR2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/86618187
++++SteamVR2.2.0开发指南:https://blog.csdn.net/VRunSoftYanlz/article/details/88784527
++++SteamVR2.2.0快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/88833579
++++SteamVR2.2.0交互系统:https://blog.csdn.net/VRunSoftYanlz/article/details/89199778
++++SteamVR2.2.0传送机制:https://blog.csdn.net/VRunSoftYanlz/article/details/89390866
++++SteamVR2.2.0教程(一):https://blog.csdn.net/VRunSoftYanlz/article/details/89324067
++++SteamVR2.2.0教程(二):https://blog.csdn.net/VRunSoftYanlz/article/details/89894097
++++SteamVR_Skeleton_Poser:https://blog.csdn.net/VRunSoftYanlz/article/details/89931725
++++SteamVR实战之PMCore:https://blog.csdn.net/VRunSoftYanlz/article/details/89463658
++++SteamVR/Extras:https://blog.csdn.net/VRunSoftYanlz/article/details/86584108
++++SteamVR/Input:https://blog.csdn.net/VRunSoftYanlz/article/details/86601950
++++OpenXR简介:https://blog.csdn.net/VRunSoftYanlz/article/details/85726365
++++VRTK杂谈:https://blog.csdn.net/VRunSoftYanlz/article/details/82562993
++++VRTK快速入门(杂谈):https://blog.csdn.net/VRunSoftYanlz/article/details/82955267
++++VRTK官方示例(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82955410
++++VRTK代码结构(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82780085
++++VRTK(SceneResources):https://blog.csdn.net/VRunSoftYanlz/article/details/82795400
++++VRTK_ControllerEvents:https://blog.csdn.net/VRunSoftYanlz/article/details/83099512
++++VRTK_InteractTouch:https://blog.csdn.net/VRunSoftYanlz/article/details/83120220
++++虚拟现实行业应用:https://blog.csdn.net/VRunSoftYanlz/article/details/88360157
++++Steam平台上的VR:https://blog.csdn.net/VRunSoftYanlz/article/details/88960085
++++Steam平台热销VR:https://blog.csdn.net/VRunSoftYanlz/article/details/89007741
++++VR实验:以太网帧的构成:https://blog.csdn.net/VRunSoftYanlz/article/details/82598140
++++实验四:存储器扩展实验:https://blog.csdn.net/VRunSoftYanlz/article/details/87834434
++++FrameVR示例V0913:https://blog.csdn.net/VRunSoftYanlz/article/details/82808498
++++FrameVR示例V1003:https://blog.csdn.net/VRunSoftYanlz/article/details/83066516
++++SwitchMachineV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++PlaySceneManagerV1022:https://blog.csdn.net/VRunSoftYanlz/article/details/83280886
++++Unity5.x用户手册:https://blog.csdn.net/VRunSoftYanlz/article/details/81712741
++++Unity面试题ABC:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++Unity面试题D:https://blog.csdn.net/VRunSoftYanlz/article/details/78630838
++++Unity面试题E:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity面试题F:https://blog.csdn.net/VRunSoftYanlz/article/details/78630945
++++Cocos2dx面试题:https://blog.csdn.net/VRunSoftYanlz/article/details/78630967
++++禅道[zentao]:https://blog.csdn.net/VRunSoftYanlz/article/details/83964057
++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818
++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502
++++Lua快速入门篇(基础概述):https://blog.csdn.net/VRunSoftYanlz/article/details/81041359
++++框架知识点:https://blog.csdn.net/VRunSoftYanlz/article/details/80862879
++++游戏框架(UI框架夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80781140
++++游戏框架(初探篇):https://blog.csdn.net/VRunSoftYanlz/article/details/80630325
++++.Net框架设计:https://blog.csdn.net/VRunSoftYanlz/article/details/87401225
++++从零开始学架构:https://blog.csdn.net/VRunSoftYanlz/article/details/88095895
++++设计模式简单整理:https://blog.csdn.net/vrunsoftyanlz/article/details/79839641
++++专题:设计模式(精华篇):https://blog.csdn.net/VRunSoftYanlz/article/details/81322678
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity小游戏算法分析:https://blog.csdn.net/VRunSoftYanlz/article/details/87908365
++++Unity案例(Vehicle):https://blog.csdn.net/VRunSoftYanlz/article/details/82355876
++++UML类图:https://blog.csdn.net/vrunsoftyanlz/article/details/80289461
++++PowerDesigner简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86500084
++++Unity知识点0001:https://blog.csdn.net/vrunsoftyanlz/article/details/80302012
++++Unity知识点0008:https://blog.csdn.net/VRunSoftYanlz/article/details/81153606
++++U3D_Shader编程(第一篇:快速入门篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372071
++++U3D_Shader编程(第二篇:基础夯实篇):https://blog.csdn.net/vrunsoftyanlz/article/details/80372628
++++Unity引擎基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78881685
++++Unity面向组件开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78881752
++++Unity物理系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78881879
++++Unity2D平台开发:https://blog.csdn.net/vrunsoftyanlz/article/details/78882034
++++UGUI基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78884693
++++UGUI进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78884882
++++UGUI综合:https://blog.csdn.net/vrunsoftyanlz/article/details/78885013
++++Unity动画系统基础:https://blog.csdn.net/vrunsoftyanlz/article/details/78886068
++++Unity动画系统进阶:https://blog.csdn.net/vrunsoftyanlz/article/details/78886198
++++Navigation导航系统:https://blog.csdn.net/vrunsoftyanlz/article/details/78886281
++++Unity特效渲染:https://blog.csdn.net/vrunsoftyanlz/article/details/78886403
++++Unity数据存储:https://blog.csdn.net/vrunsoftyanlz/article/details/79251273
++++Unity中Sqlite数据库:https://blog.csdn.net/vrunsoftyanlz/article/details/79254162
++++WWW类和协程:https://blog.csdn.net/vrunsoftyanlz/article/details/79254559
++++Unity网络:https://blog.csdn.net/vrunsoftyanlz/article/details/79254902
++++Unity资源加密:https://blog.csdn.net/VRunSoftYanlz/article/details/87644514
++++PhotonServer简介:https://blog.csdn.net/VRunSoftYanlz/article/details/86652770
++++编写Photon游戏服务器:https://blog.csdn.net/VRunSoftYanlz/article/details/86682935
++++C#事件:https://blog.csdn.net/vrunsoftyanlz/article/details/78631267
++++C#委托:https://blog.csdn.net/vrunsoftyanlz/article/details/78631183
++++C#集合:https://blog.csdn.net/vrunsoftyanlz/article/details/78631175
++++C#泛型:https://blog.csdn.net/vrunsoftyanlz/article/details/78631141
++++C#接口:https://blog.csdn.net/vrunsoftyanlz/article/details/78631122
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630945
++++C#数据类型:https://blog.csdn.net/vrunsoftyanlz/article/details/78630913
++++Unity3D默认的快捷键:https://blog.csdn.net/vrunsoftyanlz/article/details/78630838
++++游戏相关缩写:https://blog.csdn.net/vrunsoftyanlz/article/details/78630687
++++UnityAPI.Rigidbody刚体:https://blog.csdn.net/VRunSoftYanlz/article/details/81784053
++++UnityAPI.Material材质:https://blog.csdn.net/VRunSoftYanlz/article/details/81814303
++++UnityAPI.Android安卓:https://blog.csdn.net/VRunSoftYanlz/article/details/81843193
++++UnityAPI.AndroidJNI安卓JNI:https://blog.csdn.net/VRunSoftYanlz/article/details/81879345
++++UnityAPI.Transform变换:https://blog.csdn.net/VRunSoftYanlz/article/details/81916293
++++UnityAPI.WheelCollider轮碰撞器:https://blog.csdn.net/VRunSoftYanlz/article/details/82356217
++++UnityAPI.Resources资源:https://blog.csdn.net/VRunSoftYanlz/article/details/83155518
++++JSON数据结构:https://blog.csdn.net/VRunSoftYanlz/article/details/82026644
++++CocosStudio快速入门:https://blog.csdn.net/VRunSoftYanlz/article/details/82356839
++++Unity企业内训(目录):https://blog.csdn.net/VRunSoftYanlz/article/details/82634668
++++Unity企业内训(第1讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82634733
++++Unity企业内训(第2讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82861180
++++Unity企业内训(第3讲):https://blog.csdn.net/VRunSoftYanlz/article/details/82927699
++++Unity企业内训(第4讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83479776
++++Unity企业内训(第5讲):https://blog.csdn.net/VRunSoftYanlz/article/details/83963811
++++Unity企业内训(第6讲):https://blog.csdn.net/VRunSoftYanlz/article/details/84207696
++++钻哥带您了解产品原型:https://blog.csdn.net/VRunSoftYanlz/article/details/87303828
++++插件
++++计算机组成原理(教材篇):https://blog.csdn.net/VRunSoftYanlz/article/details/82719129
++++5G接入:云计算和雾计算:https://blog.csdn.net/VRunSoftYanlz/article/details/88372718
++++云计算通俗讲义:https://blog.csdn.net/VRunSoftYanlz/article/details/88652803
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
--_--VRunSoft:lovezuanzuan--_--