摘要: 一、好首先看看sizeof和strlen在MSDN上的定义: 首先看一MSDN上如何对sizeof进行定义的: sizeof Operatorsizeof expressionThe sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggreg... 阅读全文
posted @ 2011-08-12 18:05 屁屁熊 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 16×2点阵字符型LCD模块KeilC51驱动程序 #i nclude <reg52.h> #define uchar unsigned char idata char flag0 ; idata char flag1 ; idata char flag2 ; idata char flag3 ; idata char flag4 ; idata char flag5 ; idata char f... 阅读全文
posted @ 2011-08-12 18:03 屁屁熊 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 现在内存条都是白菜价的时代,很多人手中都是4G大内存了。但是普通的32位操作系统只能认3G多的内存,有很多都是给白白的浪费掉了。近来很多人说使用补丁,能使32位的系统支持4G大容量内存。事实果真如此吗? 一,cpu的寻址能力 一般的cpu厂商标示的多少位cpu,其实说cpu的运算位宽。而CPU的位宽一般是以 min{ALU位宽、通用寄存器位宽、数据总线位宽}决定的!也就是说CPU由ALU、通用寄存... 阅读全文
posted @ 2011-08-12 18:02 屁屁熊 阅读(1100) 评论(0) 推荐(0) 编辑
摘要: --------------------------------------------------- | 问题描述一:(分析scanf()和gets()读取字符) | ---------------------------------------------------- scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有时候却就是因为... 阅读全文
posted @ 2011-08-12 18:01 屁屁熊 阅读(1201) 评论(0) 推荐(0) 编辑
摘要: 写程序时用malloc竟然出现段错误,而且明显那块没有用错,肯定是别的地方有内存泄漏的问题,导致最后内存泄漏了。需要好好查一查原因了。但程序中很多地方都用来malloc,内存全是随便用的,要改起来估计十分麻烦。。。。 下面找了点malloc与free的介绍,先看下,然后赶紧改代码。 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多,不过对于本文章第三部分的内容倒是有了转折性的认识,所以 写下这篇文章作为一个对知识的总... 阅读全文
posted @ 2011-08-12 18:00 屁屁熊 阅读(455) 评论(1) 推荐(0) 编辑
摘要: 关键词: 详细讲解IEEE浮点数 浮点数是如何存储的呢?目前已知的所有的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE 浮点数表示法来进行运算的。这种结构是一种科学表示法,用符号(正或负)、指数和尾数来表示,底数被确定为2,也就是说是把一个浮点数表示为尾数乘以2的指数次方再加上符号。 从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是... 阅读全文
posted @ 2011-08-12 17:57 屁屁熊 阅读(2417) 评论(0) 推荐(0) 编辑
摘要: 在计算机系统中,补码是最重要的编码,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。补码的规则是基于原码和反码 计算机中的几种编码: 1,原码 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示... 阅读全文
posted @ 2011-08-12 17:56 屁屁熊 阅读(891) 评论(0) 推荐(0) 编辑
摘要: 一.正数的进制转换 1.10进制->n进制 10进制转化成n进制的方法是 对n取余,所得余数倒序就是该10进制的n进制表示; 例如:10进制数:15,转换为16进制为: 15%16商0余15,所以结果为F 2.n进制->10进制 n进制转化成10进制的方法是 对n进制各位加权值求和; 例如:二进制数:0110 0100,转换为10进制为: 0 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2... 阅读全文
posted @ 2011-08-12 17:56 屁屁熊 阅读(430) 评论(0) 推荐(0) 编辑
摘要: const用来限定一个变量的值不能被改变,初学者在使用const修饰指针变量时常容易犯错,看两个例子 例子A: char * const a = 'A'; a = 'B'; 例子B: const char * a = 'A'; a = 'B'; 结论:例子A是正确的,B是错误的,说明const在*左边修饰指针变量锁指向的值,在右边修饰指针变量本身 typedef用来定义一个类型的别名,#defin... 阅读全文
posted @ 2011-08-12 17:54 屁屁熊 阅读(374) 评论(0) 推荐(0) 编辑
摘要: volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; void... 阅读全文
posted @ 2011-08-12 17:45 屁屁熊 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 调用函数时,计算机常用栈来存储传递给函数的参数。 栈是一种先进后出的数据结构,栈有一个存储区、一个栈顶指针。栈顶指针指向堆栈中第一个可用的数据项(被称为栈顶)。用户可以在栈顶上方向栈中加入 数据,这个操作被称为压栈(Push),压栈以后,栈顶自动变成新加入数据项的位置,栈顶指针也随之修改。用户也可以从堆栈中取走栈顶,称为弹出栈 (pop),弹出栈后,栈顶下的一个元素变成栈顶,栈顶指针随之修改。函数... 阅读全文
posted @ 2011-08-12 17:43 屁屁熊 阅读(2075) 评论(0) 推荐(0) 编辑
摘要: 很多情况下要求当前的程序中只有一个object。例如一个程序只有一个和数据库的连接,只有一个鼠标的object。通常我们都将构造函数的声明置于public区段,假如我们将 其放入private区段中会发生什么样的后果?这意味着什么? 当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的, 由于在c... 阅读全文
posted @ 2011-08-12 17:42 屁屁熊 阅读(1730) 评论(0) 推荐(1) 编辑
摘要: 文件管理 cat chattr chgrp chmod chown cksum cmp diff diffstat file find git gitview indent cut ln less locate isattr mattrib mc mdel mdir mktemp more mmove mread mren mtools mtoolstest mv od paste patch rcp rm slocate split tee tmpwatch touch umask which cp in mcopy mshowfat rhmask whe... 阅读全文
posted @ 2011-08-12 17:40 屁屁熊 阅读(183) 评论(0) 推荐(0) 编辑
摘要: gcc和g++都是GNU(组织)的一个编译器。误区一:gcc只能编译c代码,g++只能编译c++代码 两者都可以,但是请注意: 1.后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。 2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。 误区二:g... 阅读全文
posted @ 2011-08-12 17:38 屁屁熊 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 使用这些格式需要声明包含<iomainip> long flags( ) const 返回当前的格式标志。 long flays(long newflag) 设置格式标志为newflag,返回旧的格式标志。 long setf(long bits) 设置指定的格式标志位,返回旧的格式标志。 long setf(long bits,long field)将field指定的格式标志位置为bits,返回... 阅读全文
posted @ 2011-08-12 17:36 屁屁熊 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了。 passphrase可以为空,免得登录时还是要输入一次密码。 点击Save private key 按钮保存公匙和私匙,例如key.ppk,public key不用保存,以后使用Puttygen.exe Load功能就可以显示p... 阅读全文
posted @ 2011-08-12 17:33 屁屁熊 阅读(1092) 评论(0) 推荐(0) 编辑
摘要: #pragma 的用法 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器 或操作系统专有的,且对于每个编译器都是不同的。 其格式一般为: #Pragma Para 其中Para 为参数... 阅读全文
posted @ 2011-08-12 17:31 屁屁熊 阅读(479) 评论(0) 推荐(0) 编辑
摘要: vi的定制,可使用:set命令来设置和修改选项 亦可建立.exrc文件来初始化不同环境中的选项。 在启动时,vi首先执行主目录下的.exrc文件,然后执行当前目录下的.exrc文件 最后,存储在shell变量EXINIT中的任何命令都将在vi启动时执行,EXINIT中的设置将覆盖主目录.exrc文件的设置 :set命令 可修改两中类型的选项1.不是开就是关的触发选项 2.带数字或字符串直的选项 :... 阅读全文
posted @ 2011-08-12 17:30 屁屁熊 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 几种函数调用方式 1.__cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 2._stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数... 阅读全文
posted @ 2011-08-12 17:29 屁屁熊 阅读(368) 评论(0) 推荐(0) 编辑
摘要: C++中的空类,默认产生哪些类成员函数? class Empty { public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取址运算符 const Empty* op... 阅读全文
posted @ 2011-08-12 17:28 屁屁熊 阅读(661) 评论(0) 推荐(0) 编辑