自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PHP中声明一个空数组

PHP中声明一个变量包括数组为空,应该使用$var = null声明一个空数组使用$var = array();一般不会出现问题,但是如果声明一个空二维数组使用$array = array(array());会使数组包含一个0=>array()的元素

2016-01-07 11:01:52 5305

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-01-07 10:43:57 524

原创 linux中c/c++数组的最大长度

由于栈空间大小有限,默认为8M,可空过ulimit -a命令查看,linux中数组的大小不能超过8M(实际会比理论值稍微小一点),对于char数组就是长度小于8*1024*1024,对于int数组是长度小于2*1024*1024。这时可以采用堆空间的方式解决,string的最大长度可通过string.max_size()查看,一般32位下为2的32次方。

2015-10-30 17:53:27 3661

转载 关于accept得到的socket本地端口

服务器端accept得到的socket本地端口就是listen端口客户端如果不指定会随机一个本地端口因此服务器端没有连接数量的限制(硬件无限),客户端最多不能超过65533个连接转自http://ticktick.blog.51cto.com/823160/779866今天与同学争执一个话题:由于socket的accept函数在有客户端连接的时候产生了新

2015-09-03 16:11:21 4071

原创 linux虚拟机ping 总显示From 192.168.4.211: icmp_seq=2 Redirect Network(New nexthop: 192.168.4.1)

VMware linux虚拟机ping的时候,总显示From 192.168.4.211: icmp_seq=2 Redirect Network(New nexthop: 192.168.4.1)192.168.4.211是真实主机IP内网外网都ping的通,连接正常,也没有中毒,最后发现是开了wifi共享的原因,主机被识别为路由

2015-08-26 23:11:19 17520 3

原创 pthread_cancel()和取消点

总结:pthread_cancel()函数会向线程发送一个取消信号,当线程被设置为异步取消(pthread_setcanceltype设置),那么线程会结束,如果有cleanup函数就执行完cleanup结束;如果线程不是异步取消,那么线程会继续执行直到最近的下一个取消点结束;线程也可以设置为忽略取消信号。线程在执行过程中,会在一些地方检测是否有未响应的取消信号,这些地方就叫取消点。取消点一般是可以

2015-07-12 23:02:09 2977

原创 linux环境C编程与windows的不同

1.system("pause")不能使用,可自己写一个mypause()函数#include #include void mypause(){ char ch; printf("Press Enter to continue...\n"); __fpurge(stdin); while((ch = getchar())!='\n' && ch !

2015-06-25 22:18:17 1009

原创 【未完成】fseek后文件指针中_ptr回到文件头:文件指针(FILE *fp)的定义与文件输入缓冲区

今天写有关文件操作的程序,要从文本文件中统计某个单词的词频,于是想先写一个从已经打开的文件中获取一个单词的函数,如下:/* 从文件流中读取一个单词保存到word中,并返回单词的长度 */int fget_word(FILE

2015-06-16 00:06:00 1843 2

转载 const char*, char const*, char*const的区别

const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to

2015-06-15 11:04:50 399

转载 函数指针的强制转换用法

http://blog.chinaunix.net/uid-20459533-id-1944392.html2004年7月的一天,在电子BBS讨论区上溜达,看到一个有趣的帖子,整个帖子内容如下: 纯C51复位功能函数:一个大三学生,让人又爱又怕 现单列复位部分如下:main() { unsigned char code rst[]={0xe4,0xc0,0xe0,0

2015-06-11 21:36:55 2212

原创 将指针强制类型转换为函数指针

尽管函数不是变量,但它在内存中仍有其物理地址,该地址能够赋给指针变量。获取函数地址的方法是:用不带有括号和参数的函数名得到。函数名相当于一个指向其函数入口指针常量。 那么既然函数名是一个指针常量,那么就可以对其进行一些相应的处理,如强制类型转换。那么我们就可以把这个地址放在一个整形指针数组中,然后作为函数指针调用即可。强制类型转换的方法如下所示:(参考自http://blog.ch

2015-06-11 21:34:20 6811 1

转载 【精华】指针释疑

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。   先声明几个指针放着做例子:   例一:   (1)int *ptr;   (2)char *ptr;   (3)int **ptr;   (4)int

2015-06-11 19:31:00 453

转载 防止VC调用chkstk函数

微软的C\C++编译器总是非常的弱智,不但随便乱插运行时函数,还随便加进乱七八糟的引用,导致程序难以通用。例如__chkstk函数,只要你使用8120字节以上的局部变量,他就会偷偷调用(CALL)该函数, 例如 int Data[8192];int *P=(int*)&Data;for(int I=0;I{*P=(int)I;} 反汇编结果,在进行for循环之前,他

2015-06-09 19:16:14 4571

原创 计算KMP模式匹配算法中next数组的代码分析及改进型KMP算法中nextval数组代码分析

#include void get_next(char *t, int *next);int main(){ char t[] = "0ababaaaba"; int next[10]; t[0] = 9; get_next(t, next); return 0;}/* 通过计算返回子串T的next数组 */void get_next

2015-06-06 20:44:45 1068

原创 判断大端小端存储的方法

int型数据给出的地址是数据的起始地址内存地址从左向右,从上到下增大,左上方是低位地址数据是从低位向高位存储的,所以数据的起始地址是低位地址1. 通过指针类型强制转换并对整型数据首字节赋值,判断该赋值赋给了高位还是低位typedef unsigned char BYTE;int main(int argc, char* argv[]){ unsigned int

2015-06-05 19:19:42 557

转载 【转】char * a, char ** a, char * a[], char a[][], char * a[][], char ** a[][], char * a [][][], and so

http://blog.163.com/digoal@126/blog/static/163877040201271195312138/本文测试环境 : X86-64 bit 架构的服务器CentOS x64 5.xgcc version 4.1.2 20080704指针和数组是C的比较难搞懂的知识点, 需要结合内存来学习, 非常感谢各位

2015-05-24 01:12:15 474

转载 【转】深入 char * ,char ** ,char a[ ] ,char *a[]

C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质   数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。

2015-05-23 22:03:33 517

原创 子函数参数名与全局变量参数名相同 使全局变量在子函数中失效 #define 宏定义的值在子函数里变为0

上面的是正确的代码,一开始子函数的参数写的是int fun(struct student s[], struct student h[])数组h[]输出总出错,发现是子函数的for循环进不去,添加printf("%d", MAX)发现主函数中MAX为 6 正确,而子函数中 MAX为 0 是错误的,这时将#define MAX sizeof(s)/sizeof(s[0]) 改为#define M

2015-05-21 22:12:00 1371

原创 一个利用简单迭代方法求方程cos(x)-x=0的一个实根的程序

/*编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋给x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出roo

2015-05-16 19:46:58 15285 1

转载 char *和char[]的初始化

昨晚上随便尝试写了下一个简单的reverse函数,就是颠倒字符的顺序,结果出现问题.研究了半天,大致是关于char* 和char[]初始化的.char* str1 = "abcd";char str2[] = "abcd";void reverse(char * input, int len){ ...}在调用reverse函数时. 从形式上 reverse

2015-05-13 21:56:48 895

转载 函数中的数组参数

在c和c++中,数组作为函数的参数,要掌握以下几点:1.数组作为参数时,退化为指针数组参数不是按值传递,它是传递第一个元素(准确地说是第0个)的指针(即数组被传递为指针)。例如,如下声明:void putValues(int[10]); 被编译器视为:void putValues(int*);C/C++数组参数的长度与参数声明无关。因此,下列三个声明是等价的:void pu

2015-05-13 17:57:59 963

转载 希尔排序——《C programming language》

/* shellsort : sort v[0]...v[n-1] into increase order */void shellsort(int v[], int n){ int gap, i, j, temp; for (gap = n / 2; gap > 0; gap /= 2) { for (i = gap; i < n; i++)

2015-04-16 18:37:48 492

转载 【精华】关于C中的输入输出缓冲-buffering in standard streams

英文解释buffering in standard streams  http://www.pixelbeat.org/programming/stdio_buffering/键盘缓冲--- 键盘Bios 和键盘管理---操作系统启动后操作系统接管操作系统把各种设备看成文件DOS ,Windows, Unix ,把键盘,显示器,鼠标等称为终端;而键盘,显示器组合称为

2015-04-13 22:08:33 563

原创 【汇总】scanf、getchar、getch、getche、getc、fgetc、gets、fgets、getline

1.scanf函数    原型:int scanf(char *format,...]);    参数:format 用 restrict 修饰。format 指向的控制串由以下三类字符组成:              格式说明符:%加转换字符              空白符:空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。空白符可以是空格

2015-04-12 12:08:12 1686

转载 注意:C语言中没有指定同一运算符的多个操作数或者某函数各个参数的求值顺序,如果代码的执行结果和求值顺序有关,都是不好的程序设计风格。

注意:C语言中没有指定同一运算符的多个操作数的计算顺序,也没有指定某函数各个参数的求值顺序。    如: x = f() + g () 可以先计算 f(),也可以先计算 g(),如果 f 或者 g会改变另一函数所使用的变量的值,也就是说 x 的结果可能会依赖于这两个函数的计算顺序,这时,为了保证要求的顺序,应该将中间结果保存在临时变量中。    同理,printf("%d %d\n",  

2015-04-09 22:49:55 1277

原创 一元运算符 + 表示正号 - 表示负号

一元运算符包括  +  -  sizeof()  !  ~  ++  --其中 + 表示正号; - 表示负号

2015-04-09 22:05:01 2479

转载 表达式 x &= ( x - 1) 可以将x最右边值为1的二进制位置0

表达式 x &= ( x - 1) 可以将x最右边值为1的二进制位置0

2015-04-09 21:42:45 466

原创 将变量x声明为unsigned类型,可以保证右移时无论程序在什么机器上运行,左边空位都由0填补

左移时由 0 补低位空位,右移时无符号数unsigned由 0 补高位空位,有符号数signed根据机器不同补符号位或者补0。int默认是有符号的,将变量x声明为unsigned类型,可以保证右移时无论程序在什么机器上运行,左边空位都由0填补。

2015-04-09 17:35:55 453

转载 x = x & ~077 与 x = x & 0177700 都将 x 后六位置 0,但可移植性不同,建议采用将高位为0的数取反的方式

x = x & ~077 与 x = x & 0177700 都将 x 后六位置 0,x & ~077与机器字长无关,可移植性强,而且没有额外的开销;而 x & 0177700将 x 假定为16位长度的数值,当机器不同导致变量 x 的长度改变时,结果不同,不具有可移植性。

2015-04-06 16:29:39 1880 1

原创 C语言中的随机数 srand ( ) 和 rand ( )

在C语言中,生成一个随机数,一般利用两个函数,即void srand ( unsigned int seed ) 和 int rand ( void )。其中,srand函数用于生成一个随机数种子,种子的值等于参数seed,这个参数由我们指定一个数、式子或者函数值,rand函数根据这个随机数种子进行运算生成一个[ 0 , RAND_MAX (int或 unsigned int最大值) ]范围内

2015-04-04 18:34:06 16459 1

原创 《大话数据结构》笔记

第一章1.程序设计的实质是对确定的问题选择一个好的数据结构,加上设计一种好的算法。2.数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理, 也被称为记录。一个数据元素可以自若干个数据项组成,数据项是数据不可分割的最小单位。3.数据结构分为逻辑结构和物理结构。4.逻辑结构分为以下四种:集合结构、线性结构、树形结构、图形结构。5.物理结构:是指数据的逻辑结

2015-02-28 16:05:56 727

原创 C知识回顾(《C程序设计语言 The C Programming Language》)

1.单引号中的字符表示一个整形值,我们称为字符常量。例如,'\n'是单个字符,"\n"是只包含一个字符的字符串常量。

2015-02-22 21:11:39 1100

原创 带保存游戏记录功能的猜数字游戏

需要在c:\py\下新建一个空的guess_number_record.txt文件#!/usr/bin/env python#-*- coding:utf-8 -*-f = open('c:\py\guess_number_record.txt','r')lines = f.readlines()f.close()record = {}for line in lines:

2015-02-13 22:03:34 691

原创 float型变量format转换中精确度设置时将int常数赋值给float型变量报错

今天写了段猜数字记录record的代码如下:#!/usr/bin/env python#-*- coding:utf-8 -*-f = open('c:\py\guess_number_record.txt','r')record = f.read().split()game_times = int(record[0])min_times = int(record[1])to

2015-02-12 22:21:46 1111

转载 输出斐波那契数列另一种解答

fibonacci = [1,1]num = input("How many Fibonacci numbers do you waht?")for i in range(num-2):    fibonacci.append(fibonacci[-2]+fibonacci[-1])print fibonacci

2015-02-06 22:27:25 563

原创 Python中else if 报语法错误SyntaxError: invalid syntax

Python中 if 和 else 都是关键字,编辑器高亮显示看起来正常,但其实Python中并没有 else if 语句,改为 elif 后程序正常运行。

2015-02-06 18:35:22 15053

转载 with open('abc.txt', 'r') as f

with open('abc.txt', 'r') as f:   balabalabala等价于try:    f = open('abc.txt', 'r')except:    passelse:    balabalabalafinally:    f.close()

2015-02-02 17:25:09 3693

原创 对象变量和类变量

类变量是共享的——他们可以被该类的所有实例访问。类变量只是一个拷贝,当任何一个对象改变一个类变量时,所有的其它实例都将改变。对象变量是类的每个对象或实例所特有的。既然这样,每个对象都有自己的字段拷贝,也就是说,在不同的实例中,它们不共享,同名的字段没有任何联系。类变量用类名.类变量名表示;对象变量用self.对象变量名表示。一个对象变量与一个类变量名字相同时,类变量将被隐藏!

2015-01-31 17:23:08 716

原创 集合的add方法和update方法的区别

>>> s = set('abc')>>> s{'c', 'b', 'a'}>>> s.add('de')>>> s{'c', 'b', 'de', 'a'}>>> s.update('fg')>>> s{'g', 'de', 'a', 'c', 'b', 'f'}>>> 如上面代码所示,add将括号内字符作为一个整体加入集合中,而uptate将括号内字

2015-01-30 22:33:58 1345

转载 Python 集合

一、目录1、集合概述2、关于集合的操作符、关系符号3、集合的一系列操作(添加、更新、访问、删除)4、关于集合的内建函数、内建方法5、小结二、集合概述集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。集合元素(set elements):组成集合的成员1 >>> li=['a','b','c','a']

2015-01-30 22:20:31 709

空空如也

空空如也

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

TA关注的人

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