- 浏览: 17931 次
- 性别:
- 来自: 北京
最新评论
文章列表
1. 索引和分片
1.1 字符串、列表和元组
字符串、列表、元组都可以通过[]进行索引和分片,其中,第一个元素的索引为0。而且在索引和分片中可以使用负数,此时,-1表示最后一个元素,-2表示倒数第二个元素,一次类推。
需注意的是,list、tuple的分片操作的结果仍是list、tuple,即使结果中只有一个元素,而list、tuple的索引操作的结果为元素类型,如下:
alist = [1, 2, 3, 4, 5]
print alist[0], alist[0:1]
数组类型为 const 指针,且附带元素的类型和数组长度信息,仅当数组元素的类型和数组长度均相同时,两个数组类型才相同。比如,有“int a[16], b[15]”,a,b不是同一个类型,因为数组的长度不同。
当实参为数组类型时,比如有“int a[16];”,以 a 作为实参,如果形参是非引用类型,比如“int pa[N]”,N为值任意的常量表达式,那么编译器将 pa 处理为 int * 类型,而不是数组类型 int [N]。如果形参是引用类型,比如 “
1. 内置类型的初始化
1.1 静态创建的内置类型的初始化
“静态创建”是指变量在数据段或者栈中定义。静态创建的内置类型有两种初始化:直接初始化和复制初始化,比如,“int i = 10;”是复制初始化,“int i(10);”是直接初始化。需要注意的是,在对静态创建的内置类型进行直接初始化时,“()”中的初始化式不能为空,即“int i();”并没有定义整数i,而是声明了函数i,该函数形参表为空,返回int类型。
还有,如果仅仅定义变量,比如“
7. 虚函数在继承层次的作用域
“如果通过基类的引用或者指针调用虚函数成员,那么编译器将在基类中查找函数名。假定找到了函数名,编译器就检查实参与形参是否匹配。 这也是虚函数必须在基类和派生类中拥有同一原型的原因。”
如果在派生类中定义了与基类虚函数同名但函数原型不同的函数,那么该函数将屏蔽基类定义的虚函数。
总之, (1)无论调用虚函数还是非虚函数,都是在编译时期根据调用者的静态类型来进行名字查找与函数类型检查。
(2)派生类的作用域嵌套在基类的作用域中,派生类可以重写(覆盖)基类定义的虚函数,也可以屏蔽基类的虚函数或者非虚函 ...
1. 虚函数
1.1 触发动态绑定(调用虚函数)的条件
<C++ Primer>中说触发虚函数有两个条件:一是所调用的成员函数为虚函数,二是必须通过基类类型的引用或指针进行函数调用。
但是,在vc2005中,如下的代码并不能触发动态绑定:
base_t objBase;
drived_t objDrived;
base_t &pObj = objBase;
1. dos 汇编 与 win32 汇编编译器与连接器的区别:
(1) 编译器
Dos 和 win16 环境下,编译器(masm)生成的obj文件的格式为 OMF(Intel Object Module Format), win32环境下,编译器(多为 ml)生成的obj 文件的格式为 COFF.
masm 从 6.11版开始支持
【From:http://www.gestalt.org/arnie.htm】
The Paradoxical Theory of Change
Arnold Beisser, M.D.
For nearly a half century, the major part of his professional life, Frederick Perls was in conflict with the psychiatric and psychological establishments. He worked uncompromisingly in his own direction, ...
发信人: nullnull (rest... go...), 信区: WorkLife
标 题: 关于实习的疑惑(纠结)——求已经毕业的人指点一下
发信站: 北邮人论坛 (Tue Mar 9 22:11:39 2010), 站内
实习公司及职位:VMware
职位:研发里的一个组
年级:计算机研二
问题:
1. Turbo C 2.0 工程文件下各模块相互通信
(1) 同一个工程下的不同.c文件包含相同的头文件时,比如my.h,则在my.h中,不能定义变量,因为此处定义的变量具有全局作用域,导致编译时出现重定义错误。但可以定义常量,比如 #define PI 3.14 , 因为,该编译预处理只是在所在的.c文件中进行宏替换,不会引起命名上的冲突。
(2) 同一个工程下的不同.c文件可以通过共享变量或数组进行通信。变量不仅包括char, int, long等基本类型的变量,还可以是
1. “opcode前缀——66h”对size of oprand的影响
分为两种情况,oprand的值在寄存器中或者在内存中。
如果oprand的值在寄存器中,那么当default size of oprand = 32bit时,66h使得寄存器被解析为16bit的寄存器,否则,66h使得寄存器被解析为32bit的寄存器。下面是在win32程序中(default size of oprand = 32bit)中的例子:
关于在IDA插件中调用外部函数和实现消息循环
2008-4-9
1、在VS2005中编写IDA插件的环境配置
IDA Plug-in实际上是一个DLL, 只不过要用到IDA SDK提供的头文件和.lib库,所以要将工程最终生成的文件设置为DLL类型, 而且在编译和连接时必须引入这些头文件和.lib库所在目录,详细的设置在《IDA PLUG-IN WRITING IN C/C++》中。
1、 IDA Pro中的segment结构与PE文件中节区的对应关系
经IDA Pro的反汇编后,PE文件中的.code节区(存放代码的节区)对应IDA Pro中名为_text的segment(code segment), .rdata节区(只读数据节区
1. VC2005 release 版本 连接的问题
今天用 vc2005 编译程序的时,Debug 版本可以生成可执行文件,并成功运行,但 release 版本在连接时出现问题,报出的错误如下:
1>Linking...
1>EnumProtocals.obj : fatal error LNK1276: invalid directive 'Visual' found; does notstart
1>Build log was saved at "file://d:\MyProjects\VC2005\WinNet\SimpleTest\EnumProt ...
1. include/linux/config.h
include/linux/module.h中包含着linux/config.h的头文件,linux/config.h中包含着以#define形式定义的内核编译编译时所选择的项。
2. __init 和 __exit
在将程序编译为模块时(即gcc 编译选项了加了 _DMODULE),这两个内核宏不被识别,从而导致编译出错。
3. 驱动程序中的ioctl()
1. struct timeval:
#include <bits/time.h>
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
__time_t 是 long int 的宏定义
__suseconds_t 也是 long int的宏定义.