HelloWorld

ASM,C,LUA,LINUX(gentoo)
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年9月19日

摘要: 关于补码,看过一些书籍和网文,基本都是在“求反加一”的方法、步骤上反复强调,而对于补码的本质和定义,讨论的不足。这就对初学者的造成了误导,使得很多人都纠结在-128的补码求取过程中。关于反码和原码,大家都是在郑重其事的讲解,其实,学过的人都知道,它们的重要性是 0 !加法器计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。即:减去某个数字(或者说加上某个负数)的运算,都应该研究如何用加法来完成。模、补数在日常生活当中,可以看到很多这样的事情:把某物体左转 90 度,和右转 270 度,在不考虑圈数的条件下,最终的效果是相同的;把分针倒拨 20 分钟,和正拨 40 分钟,在不 阅读全文

posted @ 2011-09-19 19:35 光铭 阅读(817) 评论(2) 推荐(0) 编辑

摘要: 0.区分指向函数的指针和返回指针的函数int *f();()的优先级高于间接访问的优先级,所以先执行(),因此f是一个函数,之后返回一个指向int的指针。int(*f)();先进行了间接访问,所以f是一个指针,之后进行了函数调用,所以f是一个指向函数的指针。int *(*f)();f是一个指向函数的指针,返回的是指向整数的指针。int (*f[])();f是一个数组,取得数组中一个元素后,进行了间接操作,得到的是一个函数,函数的返回值是整形。所以f是一个元素为指向返回值位整型的函数的数组。int *(*f[])();f是一个数组,包含的元素是指向函数的指针,函数的返回值为int *。void 阅读全文

posted @ 2011-09-19 19:04 光铭 阅读(261) 评论(0) 推荐(0) 编辑

摘要: []要求数组或指针1.string str="hello world!";string *p=&str;for(unsigned int i=0;i<str.size();i++)cout<<(*p)[i];这里p[i]是错误的,因为string类对象不是传统的对象,而(*p)可以认为是一个数组2char *p="hello world!";cout<<p[i];这里注意:sizeof(p)是4,只是一个指针的大小sizeof(*p)是1,是一个char的大小 阅读全文

posted @ 2011-09-19 19:00 光铭 阅读(107) 评论(0) 推荐(0) 编辑

摘要: 是数字0,字母x的组合 0x 阅读全文

posted @ 2011-09-19 18:59 光铭 阅读(1669) 评论(0) 推荐(0) 编辑

摘要: 用static 修饰的变量不能再另外的文件中用extern 共享在类中,静态成员函数是为全体类对象所共享的,没有this指针静态数据成员,除过static const int 意外,都必须在类外面进行赋值初始化,否则编译器不会为其分配空间,编译通过,链接会出现外部错误。而对于static const int,编译器会将其视为一个符号,不占用内存空间,可以在类中申明的时候进行初始化。 在类外面进行定义时需要加上类型,但无需再写static;静态成员可以访问静态成员,不能访问非静态成员,因为没有this指针。非静态成员当然可以访问静态成员了。虽然没有this指针但是由于逻辑上的关系,可以用成员访问 阅读全文

posted @ 2011-09-19 14:35 光铭 阅读(130) 评论(0) 推荐(0) 编辑

摘要: 1. 私有成员在派生类中是无权直接访问的,只能通过调用基类中的公有成员函数的方式实现。2. 一定要直接访问基类中的私有成员,可以把这些成员说明为保护成员protected。一般格式:Class 类名{[private:] 私有成员protected: 保护成员public: 公有成员};1、不涉及派生时,保护成员与私有成员的地位完全一致。#include <iostream.h>//***************************************************class samp{ int a;protected: int b;public: int c;  阅读全文

posted @ 2011-09-19 14:33 光铭 阅读(146) 评论(0) 推荐(0) 编辑

摘要: 可能许多人对内存分配上的“栈 stack”和“堆 heap”还不是很明白。包括一些科班出身的人也不明白这两个概念。我不想过多的说这两个东西。简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。stack一般是静态分配内存,heap上一般是动态分配内存。由malloc系统函数分配的内存就是从堆上分配内存。从堆上分配的内存一定要自己释放。用free释放,不然就是术语——“内存泄露”(或是“内存漏洞”)—— Memory Leak。于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和“堆内存”的差别吧。 阅读全文

posted @ 2011-09-19 14:26 光铭 阅读(213) 评论(0) 推荐(0) 编辑

摘要: int main(int argc,char **argv)int argc;char *argv[];argc 参数个数 最少为1An integer that contains the count of arguments that follow in argv. The argc parameter is always greater than or equal to 1.argv 参数列表 第一个参数为环境变量之类的信息An array of null-terminated strings representing command-line arguments entered by t 阅读全文

posted @ 2011-09-19 14:22 光铭 阅读(205) 评论(0) 推荐(0) 编辑

摘要: ★ 相同点:1. 都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★ 区别:1. 指针是一个实体,而引用仅是个别名;2. 引用使用时无需解引用(*),指针需要解引用;3. 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终” ^_^4. 引用没有 const,指针有 const,const 的指针不可变;5. 引用不能为空,指针可以为空;6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;typeid(T) == typeid(T&) 恒为真,siz 阅读全文

posted @ 2011-09-19 14:16 光铭 阅读(167) 评论(0) 推荐(0) 编辑

摘要: 这种方法小学的时候就学过,它虽然简单,但是产生误差累计的因素还是很明显的。就拿保留整数来说:小数部分从0.0~0.4999,是属于“舍”的范围,产生的误差就是0.0~0.4999;而小数部分0.5~0.9999,是属于“入”的范围,产生的误差就是0.5~0.0001。在此就可以看出,两者的误差是不均等的,“入”的误差稍大。因此,一个运算式子,如果其中经过了多次的四舍五入,产生的误差一般来说是难以互相抵消的。四舍六入五成双其实,就一位小数来说,舍去 0.0 是不存在误差的;只有 0.1~0.4、0.5、0.6~0.9 这 9 个数字舍入存在误差的问题。那么就可以把“0.1~0.4”这 4 个数字 阅读全文

posted @ 2011-09-19 14:14 光铭 阅读(318) 评论(0) 推荐(0) 编辑