C
董哥的黑板报
90后程序员!
展开
-
C:28---RAND_MAX常量
一、头文件RAND_MAX指的是 C 语言标准库<stdio.h>中定义的一个宏二、概念经预编译阶段处理后,RAND_MAX展开为一个整数类型的常量表达式。RAND_MAX 是 <stdlib.h> 中伪随机数生成函数rand所能返回的最大数值 这意味着,任何一次对 rand 的调用,都将得到一个0~RAND_MAX之间的伪随机数...原创 2019-12-09 12:56:30 · 739 阅读 · 0 评论 -
C:27---switch语句
如果执行到一个满足条件的case,那么switch会一直执行下去,直至遇到break或者语句执行到最后才退出 例如下面的程序输出2、3#include <stdio.h>int main(){ int num=2; switch(num) { case 1: printf("1\n"); case 2: printf("2\n"); case 3:...原创 2019-11-15 19:36:42 · 448 阅读 · 0 评论 -
C:26---assert与NDEBUG
引入:程序在发布时包含一些用于调试的代码,这些代码在程序开发时使用。当应用程序编写完成之后,就需要删除这些调试代码 调试代码经常用到两个预处理的功能:assert和NDEBUG一、assert预处理宏1.功能assert是一种预处理宏,用于调试代码。经常用于检查“不能发生”的条件 包含在#include <assert.h头文件中>2.格式assert(expr...原创 2019-06-14 21:02:24 · 834 阅读 · 0 评论 -
C:25---volatile关键字
防止C语言编译器优化他修饰的变量,该变量的修改,可能通过第三方来修改原创 2019-06-02 12:38:43 · 488 阅读 · 0 评论 -
C:24---register关键字
一、定义register定义的变量在寄存器中,而不是在内存中。用于快速访问二、特点register定义的变量,CPU会尽量的安排这个变量存储在寄存器中。但是由于寄存器空间有限,如果寄存器空间不足时,register定义的变量还是存放在存储器(内存)中 &(取地址)符号对register变量不起作用,因为该变量不是定义在内存中三、演示案例#include<stdio...原创 2019-06-01 09:52:11 · 492 阅读 · 0 评论 -
C:23---字节操纵函数(memset、memcpy、memcmp)
一、memset功能:把目标字符串指定数目的字节置为值c#include<string.h>void *memset(void dest,int c,size_t len);参数:1.字符串 2.值 3.设置多少个字节二、memcpy功能:将指定数目的字节从源字符串移动到目标字符串中#include<string.h>void *m...原创 2019-04-08 21:52:14 · 766 阅读 · 0 评论 -
C:22---预处理器(#include、#define、#if、#ifdef、#ifndef、#endif、#undef)
前言本文介绍的是关于预处理器的知识,预处理器的代码是在程序编译之前完成的一、头文件包含:#include使用#include来包含头文件二、宏定义:#define 格式一:普通宏定义 #define 宏名称 宏对应内容//案例:#define PERSON 17#define PRI printf("HelloWorld\n") 格式二:带参宏定义 ...原创 2019-04-08 21:46:58 · 629 阅读 · 0 评论 -
C:21---枚举(enum)
一、枚举格式enum 枚举名{ 成员};二、枚举特点枚举不需要定义变量,里面的成员可以直接使用三、枚举成员枚举成员都是常量 枚举成员没有数据类型,都是int类型 无论枚举有多少的成员,整个枚举都只有4字节四、枚举成员的值枚举的成员不能可以在枚举之外进行赋值,会出错。只可以在enum列表中进行改变值错误案例枚举成员的默认值:如果枚举变量没有...原创 2019-03-30 13:27:59 · 747 阅读 · 0 评论 -
C:20---联合/共用体(union)
一、定义和结构体定义类似,只是把struct改为union 联合也可以使用typedef取别名union person{ char student; char teacher; int id;};typedef union person{ char student; char teacher; int id;}person,...原创 2019-03-30 13:00:19 · 566 阅读 · 0 评论 -
C:19---struct结构体
一、结构体变量的定义struct Man{};直接定义struct Man xiaoMing;在定义结构体时定义struct Man{}xiaoMing,*xiaoLi;//xiaoMing为变量,xiaoLi为指针变量二、结构体的初始化与赋值在定义结构体时初始化struct Man{ int age; int id;}xiaoM...原创 2019-03-30 12:27:50 · 592 阅读 · 0 评论 -
C:18---文件的基本使用函数(fopen、fclose、feof、ferror、rewind、ftell、fseek、fgetpos、fsetpos、fflush、setvbuf)
一、fopen()FILE * fopen(const char * path, const char * mode);参数参数1:打开的文件路径及文件名称 参数2:文件打开的方式返回值打开成功:返回文件指针 打开失败:返回NULL。并把错误代码存在 error 中。文件打开方式 r 以只读方式打开文件(若文件不存在打开失败) r+ ...原创 2019-03-30 10:51:43 · 1138 阅读 · 0 评论 -
C:17---文件的读取与写入函数(fputc、fgetc、fputs、fgets、fscanf、fprintf、fread、fwrite)
一、字符的读取与写入((fputc、fgetc)int fputc (int c, File *fp);功能将字符c写入到fp流中返回值写入成功:返回写入文件的字符的ASCII码值 写入失败:返回EOF(-1)当正确写入一个字符的数据后,文件内部写指针会自动后移一个字节的位置int fgetc(FILE *stream);功能从参数流中读取一个字符返回...原创 2019-03-30 10:51:38 · 978 阅读 · 0 评论 -
C:16---restrict关键字
restrict一、功能restrict只能用于指针,是一种类型限定符 restrict用于告诉编译器,对象已经被指针所引用,不能通过除该指针外所有其他直接或间接的方式修改该对象的内容二、案例int * restrict p=(int*)malloc(10*sizeof(int));p指针申请了一块内存空间。那么只有p指针可以访问、修改该内存中的内容。其他指针不能直接修改这...原创 2019-03-29 11:48:43 · 495 阅读 · 0 评论 -
C:15---动态内存管理(malloc、realloc、calloc、free)
以下函数在#include<stdlib.h>中一、malloc()void *malloc(size_t size);功能分配size大小字节的内存空间返回值分配成功:返回分配的内存空间的首地址 分配失败:返回空指针注意返回的首地址指针类型是void*类型(因为malloc并不知道你申请的地址存放的是什么类型的数据,所以返回通用型指针void*),因此...原创 2019-03-29 11:13:17 · 606 阅读 · 0 评论 -
C:14---extern关键字
一、定义可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时,在其它模块中寻找其定义 另外,extern也可用来进行链接指定二、extern的两个作用当它与"C"一起连用时,用来告诉编译器在编译时,将函数名时按着C的规则去翻译相应的函数名而不是用C++的规则去翻译函数名。C++的规则在翻译函数名时会把函数的名字变得面目全非,可能是fun@aBc_i...原创 2019-03-29 10:39:24 · 411 阅读 · 0 评论 -
C:13---static关键字
一、静态变量总的特点①静态的意思是:该变量在内存中的位置不变 ②加上static之后,static变量在第一次初始化之后就一直存在于第一次初始化的内存中,就算函数或者代码块结束时,static变量依然存在于内存中。只有当程序执行完之后才会释放内存空间 ③重点:静态全局/局部变量存在于全局数据区 ④静态局部变量定义时建议要进行初始化。如果未初始化,编译器自动将它初始化为0⑤静态变量...原创 2019-03-29 10:39:08 · 482 阅读 · 0 评论 -
C:12---字符串处理函数(strlen、strcmp、strncmp、strcat、strncat、strcpy、strncpy、strstr、strchar、strtchr、strpbrk)
以下的函数头文件#include<string.h>一、strlen()size_t strlen(const char *str);功能:返回字符串的长度(从参数所指的地址开始,知道遇到结束符'\0'截止) 长度中不包括字符串结尾的'\0'二、strcmp()int strcmp(const char*str1,const char *str2);...原创 2019-03-27 22:26:32 · 823 阅读 · 0 评论 -
C:11---puts、gets、fgets、fputs
puts与gets被fputs与fgets代替使用一、puts功能输出一个字符串特点会自动加上换行符二、gets功能用于输入一个字符串特点普通的scanf输入字符串时遇到空格就结束读取了。gets读取时遇到空白符不会结束,遇到换行符才会结束(并且不会接受换行符) 输入的字符串,并且会自动在字符串的末尾加上空白符('\0')已经被逐渐抛弃...原创 2019-03-27 21:58:29 · 1390 阅读 · 0 评论 -
C:10---字符串的一些注意事项
如果字符串字面量之间没有间隔,或者用空白符分隔,则C会将其视为串联起来的字符串字面量字符串的名字就是字符串指针,代表着字符串第一个字符的首地址字符串数组字符串数组的大小:会把数组中最大的字符串长度作为标准长度,每一个元素都占最大字符串的长度...原创 2019-03-27 19:45:43 · 580 阅读 · 0 评论 -
C:07---数组
一、数组定义数组在定义时,数组的大小必须为一个常数(可以使用宏定义、const常量) C99标准允许变长数组(VLA)。GCC编译器实现了变长数组,但是其与C9标准不完全一致二、数组注意事项int num[5]={1,2,3}; //未初始化的都是0int num[]={1,2,3}; //数组大小自动设置为3int num[5]; //都是垃圾值...原创 2019-03-25 20:29:45 · 631 阅读 · 0 评论 -
C:06---ctype.h系列字符函数
ctype.h中的字符测试函数 int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9')返回非0值,否则返回0 int isa...原创 2019-03-23 13:11:18 · 666 阅读 · 0 评论 -
C:05---getchar()、putchar()
一、功能getchar() //会从输出队列中拿到第一个字符,然后将字符作为返回值返回 putchar(ch) //打印字符参数,不会换行二、注意事项getchar()、putchar()是预处理宏,不是真正的函数 getchar()、putchar()一次只处理一个字符三、使用输入多了,只接受一个字符输入一个字符,然后按下回车。getchar()会先打印...原创 2019-03-23 12:26:14 · 681 阅读 · 0 评论 -
C:04---布尔值(_Bool、bool)
一、_Bool数据类型C99规定_Bool用于表示真(1)和假(0) 如果把非零数赋值给_Bool,将其视为1 不过,不是所有的编译器和环境都识别_Bool数据类型二、bool类型头文件:#include<stdbool.h> #include<stdbool.h>头文件让bool成为_Bool的别名,而且还定义了true和false关键字,这两个关键字...原创 2019-03-23 11:21:47 · 758 阅读 · 0 评论 -
C:03---运算符
一、逗号运算符格式:表达式1,表达式2,表达式3....(整个逗号表达式的值,返回的结果是最后一个表达式的值) 使用起来,最好加上括号来返回最后一个表达式的值。否则逗号表达式的意义将失效二、%运算符的作用%运算符有一个作用,可以用来取一个范围内的数字,类似于随机数原理:案例:0%3=0、1%3=1、2%3=2、3%3=0、4%3=1...... 由上可以得出:n%...原创 2019-03-22 23:24:43 · 717 阅读 · 0 评论 -
C:02---scanf、printf
一、printf控制符①精度控制:输入小数点后m位(%.mf)。右对齐5位,保留小数点后m位(%d.mf)%f、%lf默认输出6位小数 ②宽度:%md(打印m为,右对齐,多出m位照常打印)。%-md(打印m位,左对齐,多出m位照常打印) ③长度:h表示短(打印短整型short:%hd),l表示长(打印长整型long:%ld) ④标记(#:%#0输出八进制,%#x输出十六进制)(0:...原创 2019-03-20 19:22:52 · 508 阅读 · 0 评论 -
C:01---数据类型与ASCII
一、整型int取值范围:-32768~32767unsigned int取值范围:0~65535short /short int取值范围:比int小unsigned short无符号短整型long长整型 定义时,后面加上l或L有符号与无符号数:unsigned:无符号数,一般用来表示数据 signed:有符号数,一般用来表示数字整型...原创 2019-03-18 22:56:15 · 1208 阅读 · 1 评论