自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Substring with Concatenation of All Words

刷了LeetCode30道题了,这道题是最难通过的,测试数据很刁钻,各种超时和边界考虑不周。参考了很多解法,中文的就没有不超时又解释明白的。以下是我的带注释代码。想看懂必须得先会Longest Substring Without Repeating Characters后两种解法。public class Solution{ public List<Integer> findSubstrin

2016-06-06 14:17:30 568

原创 位运算符巧用

使用移位运算符计算一个数的2的次幂的倍数。n << 1 即等价于 n*2n >> 1 即等价于 n/2原理可参考十进制:n << 1 相当于结尾加个0,等价于 n*10。 n >> 1 相当于结尾去掉一位,等价于 n/10。 注:对于右移,各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)使用&运算符判断奇偶print

2016-06-04 15:32:54 647

原创 补码和unsigned

补码的由来:考虑任意一个负数,比如-24,如何表示呢?不失一般性的,假设我们用一个字节来表示这个负数。我们知道24和0的二进制表示分别是:0001 10000000 0000。根据以下两式: -24 + 24 = 0;1110 1000 + 0001 1000 = 1 0000 0000;因为只用一个字节来表示,所以第二个等式右边的‘1’溢出了。显示出来的结果就是8个0。

2016-06-04 14:34:43 1367

原创 大端(BIG-ENDIAN)小端(LITTLE-ENDIAN)

总是记不住大端和小端,就像我记不住阴历和阳历一样。 这次来个一句话总结:小端存储的数据在截取的时候往往会保留下来。x86CPU都是小端的。如下是判断大小端的超简洁一行代码。printf("%s", 1&0xff ? "Little-Endian" : "End-Endian");

2016-06-04 11:38:09 636

原创 编译成exe可执行文件的过程

.c—–>.i—–>.s—–>.o—–>.exe .i是编译预处理后的文件,然后经编译器编译后生成汇编代码文件.s,再经过汇编后变成目标代码文件.o,经过链接库文件行成.exe

2016-06-04 10:56:54 935

原创 关于#include

一:<> 和“”的区别。前者只在指定目录去寻找。后者现在当前目录找,找不到再去指定目录 二:#include不是用来引入库的,现在c语言编译器默认引入所有标准库。他的作用只是引入了函数原型。比如#include

2016-06-04 10:55:03 478

原创 全局变量和静态本地变量

全局变量不初始化默认为0。本地变量不初始化值不确定。 静态本地变量为全局生存期,本地作用域,在内存中与全局变量挨着放

2016-06-04 10:51:17 960

原创 结构体内存对齐

结构体的sizeof的值总是≥各个成员的sizeof的值的和,等于所有成员中sizeof值最大的一个的sizeof的值乘上成员个数

2016-06-04 10:44:52 473

原创 关于strcpy函数

该函数的两个参数内存上不能重叠。因为该函数在现代计算机的实现上要比我们想象的复杂,之所以这样是因为这个函数覆盖面很广,所以一点点效率的提升最终都会造成质的改变。比如cpu是多线程处理器时,程序会分配给不同核不同任务来进行字符串复制。所以如果内存上重叠则会出现问题。char * dst = (char*) malloc (strlen(src)+1);strcpy(dst,src);分配内存时长度别

2016-06-04 10:43:14 520

原创 (void *),(void **)和(void***)

多用于强制转换,是一种逻辑上的表达。(void* )表示强制转换的指针是一级指针,(void **)表示是二级指针。他们的结果是一样的。

2016-06-04 10:29:56 3836

原创 指针类型的意义

int main(){ char *p; (int *P) char ch[6]="fucko"; p=ch; printf("%c",*(p+1));}得到的字符为u, 即第二个字符, 当把定义指针的char *P替换成int *p时, 输出的却是o, 即第五个字符. 所以可以看出, 定义指针时, 指针前的int或者是char主要的功能是决定你将指针的地址

2016-06-04 10:24:43 1132

原创 随机数

一共三步:#include <time.h> /*用到了time函数,所以要有这个头文件*/srand((unsigned) time(NULL)); /*播种子*/int number = rand()%(Y-X+1)+X;/*产生[X,Y]以内的随机整数*/解释下rand()%(Y-X+1)+X,rand()%100,生成[0,99]随机数。rand()%(Y-X+1)生成 [0,Y-X

2016-06-04 10:22:13 468

原创 ASCII和ANSI

ASCII:American Standard Code for Information Interchange, 美国标准信息交换代码 ANSI:American National Standards Institute 美国国家标准学会

2016-06-04 10:13:08 565

原创 预定义宏陷阱

预定义宏的定义和使用时要小心陷阱#define max(A,B) ( (A) > (B) ? (A) : (B) )max(i++,j++);    /* wrong */#define square(x) x*x    /* wrong */

2016-06-04 09:57:35 423

原创 关于getchar()

一、首先给出《The_C_Programming_Language》这本书中的例子:#include int main( ){      int c;      c = getchar();      while (c != EOF)      {         putchar();         c= getchar();      }

2016-06-04 09:43:58 996

原创 EOF和'\0'

'\0'是ascII码为0的一个字符(str[length]='\0'和str[length]=0 等价)用在字符串结尾表示字符的结束,要养成在一个自定义的字符串结尾加入'\0'的习惯EOF是文件结束符,多用于文件和输入输出流。

2016-06-04 09:39:09 815

原创 新的开始

距离2012.3

2014-07-20 22:05:18 589 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除