随笔分类 - 1.C与算法
摘要:void myprintf(const char *format,...) { va_list argptr;//参数列表 va_start(argptr, format); size_t ACTSIZE = _vscprintf(format, argptr);//内容长度,根据它给size赋值
阅读全文
摘要:sizeof和strlen区别 sizeof是关键字,在编译时就能计算出值,可以计算任何类型 strlen是函数,只有在运行时才能去计算,且只能计算字符型的. 对于数组时,strlen是判断’\0’为标志结尾的,而sizeof则计算的是数组整个空间示例如下: 打印如下: 可以看到当我们的buf1没有
阅读全文
摘要:秒级随机值-常用方法: 上面的srand((unsigned)time(NULL));表示给rand()产生随机值的种子. 其中(unsigned)time(NULL)则将当前时间转为一个正整数,也就是说,如果我们如果在小于1秒之内多次运行该代码,则随机值都是相同的. 编译运行-如下图所示,可以看到
阅读全文
摘要:#include #include static int count = 0; static struct itimerval oldtv; struct itimerval itv; void set_timer() { itv.it_interval.tv_sec = 0; itv.it_interval.tv_usec = 990000; //启动后...
阅读全文
摘要:当判断整数时 示例: 判断整数范围 打印: 当判断字符时 示例: 将"0x00"~"0xff"转化为数值0x00~0xff 打印:
阅读全文
摘要:1.首先回忆结构体 我们都知道定义一个结构体可以这样的方式定义: 除此之外,如果不想声明结构体,只想定义结构体的话,还可以这样: 2.位域之简单应用 做低层时,经常会读写寄存器,比如操作某位,设置为0或1,而在C语言中便为我们提供一种数据结构”位域”,使得我们通过读写”位域”来实现操作某位. 例如一
阅读全文
摘要:FILE * fopen(const char * path,const char * mode); 所需库: <stdio.h> 返回值 FILE是C语言定义的标准数据结构,如果open()失败,则返回NULL path 路径 mode 打开模式,包括有以下几种 r 以只读方式打开文件,该文件必须
阅读全文
摘要:异常处理之除0情况 相信大家处理除0时,都会通过函数,然后判断除数是否为0,代码如下所示: 其实这个函数还有瑕疵,当我们调用divide(0,1)时,返回值也是0,在程序运行时,根本无法判断返回值0是不是除法为0的原因. 其实可以通过setjmp()和longjmp()配合使用 描述 和goto很相
阅读全文
摘要:一级指针 int *p; //表示定义一个int型(4字节)的指针p &p //表示p自身的地址位置 p //表示p指向的地址位置(也就是p变量的值) *p //表示p指向的地址里面的内容 所以 * 的作用: p变量的值作为地址,去访问这个地址的内容 二级指针 int **pp //表示定义一个in
阅读全文
摘要:clock() 头文件 #include <ctime> 获取当前时钟计数,一般都是ms为单位,也可以通过CLOCKS_PER_SEC宏计算当前second时间,比如: sin() 函数sin的参数是使用弧度制的,需要将角度转换成弧度 比如使用简单的带参宏: sprintf sscanf返回值为1表
阅读全文
摘要:BFS将近两年没练过题了,今天重新回忆下以前刷的蓝桥杯题:九宫格重排 样例输入 样例输出 样例输入 样例输出 思路 以下图为例,空格0可以走上下左右4步 : 当前0位于的位置是(1,1),所以可以移动到(1-1,1),(1,1+1),(1+1,1),(1,1-1) 然后通过康拓展开来校验,移动的位置
阅读全文
摘要:1.首先来讲讲函数 其实每个函数名,都是函数的入口地址,如下图所示: 其中0x4013B0就是上图的func()函数的入口地址,从上图可以看到,func和&func的地址都一样,所以&对于函数而言,可以不需要 2.接下来便使用函数指针来指向上面func()函数 实例1如下: 输出结果: 2)当使用t
阅读全文
摘要:描述: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 快速排序 的平均时间复杂度为O(NlogN),是冒泡排序的一种改进版。 方法:快速排序主要
阅读全文
摘要:描述: 晓萌有一个N×N的的棋盘,中间有N*N个正方形的1×1的格子,他随机在棋盘上撒上一些棋子(假设全部正好落在各个格子里)。他希望知道,当前的棋盘上有多少个不包含棋子的,由至少四个1×1的格子组成的正方形(正方形之间可以有重叠的部分)。 输入第1行为棋盘的边长N,第2行-第N+1组成一个每行有N
阅读全文
摘要:给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 你的目标是到达最后一个下标,并且使用最少的跳跃次数。 例如: A=[2,3,1,1,4],到达最后一个下标的最少跳跃次数为 2。(先跳跃 1 步,从下标 0 到 1,然后跳跃 3 步,到达
阅读全文
摘要:编译C 首先,程序编译过程有: 1.预处理(展开宏,头文件,检查代码是否有误) 2.编译(将.c转为汇编代码.s) 3.汇编(将汇编代码.s转为机器代码.o) 4.链接(将所有机器代码.o和库文件链接成一个可执行程序) 一般编译常常包括了:预处理,编译,汇编 在linux系统中,编译c使用gcc编译
阅读全文
摘要:当函数前面加上static时,表示该函数仅在本文件里被调用,不会与其它文件相同函数发生冲突 调用库的头文件使用<>,调用自己创建的头文件使用"" memset memset对于强制转换类型不同的指针,赋值是有误的 例如: #include "stdio.h" #include "string.h"
阅读全文