学习笔记
文章平均质量分 71
yqzsl
这个作者很懒,什么都没留下…
展开
-
变量的分类及区别
一、变量的分类 变量可以分为:全局变量(外部变量)、静态全局变量、静态局部变量和局部变量。 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失,转载 2010-05-12 15:50:00 · 12296 阅读 · 1 评论 -
C++中的类型转换
1、static_cast Operator MSDN: The expression static_cast ( expression ) converts expression to the type of type-id based solely on the types present in the expression. No run-time type check is made to ensure the safety of the conversion. Syntax static_cas转载 2010-10-13 17:05:00 · 370 阅读 · 0 评论 -
vector
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #include vector属于std命名域的,因此需要通过命名限定,如下完成你的代码: using std::vector; vector vInts; 或者连在一起,使用全名: std::vector vInts; 建议在代码量不大,并且使用的命名空间不转载 2010-10-13 21:30:00 · 411 阅读 · 0 评论 -
C++文件流
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。一、打开文件 在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char* filename,int mode,int access); 参数: filename: 要打开的文件名 mode: 要打开文件的方式 access: 打开文件的属性 打开转载 2010-10-13 21:35:00 · 425 阅读 · 0 评论 -
单向链表操作详解(一)
/*===============================================作者:rerli时间:2003-12-05目的:学习单向链表的创建、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序说明:编译没有任何错误,能生成EXE文件。 这个程序TC2.0中编译生成的EXE文件, 在运行输入节点时出现以下错误(TC2.01中没有任何错误): scanf : floating point formats not linked Abnormal program转载 2010-10-14 16:43:00 · 557 阅读 · 0 评论 -
单向链表操作详解(二)
/*接着讲(测试编译时,请把相应的函数及测试代码放到上一讲代码的相关地方):排序(选择、插入、冒泡)插入(有序)*//*===============================================作者:rerli时间:2003-12-08目的:学习单向链表的创建、修改、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序说明:编译没有任何错误,能生成EXE文件。 这个程序TC2.0中编译生成的EXE文件, 在运行输入节点时出现以下错误(TC2.01中没有任何错误):转载 2010-10-14 16:46:00 · 503 阅读 · 0 评论 -
PostMessage和SendMessage的区别
1. PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。这点大家应该都明白。2. 如果在同一个线程内,PostMessage发送消息时,消息要先放入线程的消息队列,然后通过消息循环Dispatch到目标窗口。Sen原创 2010-10-20 20:17:00 · 666 阅读 · 0 评论 -
typedef struct的用法
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。 2. typedef & 结构的问题 当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先转载 2010-10-19 21:03:00 · 490 阅读 · 0 评论 -
几个常见关键字auto,overlay,static,register,const,volatile,extern
几个常见关键字auto,overlay,static,register,const,volatile,extern<br />(1) auto<br /> 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。所有的变量默认就是auto的。 auto 型参数以从右到左的顺序压入软件堆栈。对于多字节数据来说,首先将低字节压入软件堆栈。<br /> 下面给出一个 C 函数的原型: char add (auto ch转载 2010-10-19 19:55:00 · 844 阅读 · 0 评论 -
in 和 exist 区别
<br />select * from A<br />where id in(select id from B)<br />以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B表中的id相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.<br />它的查询过程类似于以下过程<br />List resultSet=[];<br />Array A=(select * from A);<br />Array B=(select id转载 2010-10-18 17:52:00 · 398 阅读 · 0 评论 -
构造函数和初始化表
#include class Account { public: Account(); Account( const char*, double=0.0 ); Account( const string&, double=0.0 ); Account( const Account& ); // ... private: // ... }; 注意:构造函数的初始化列表只在构造函数的定义中指定,而不在声明中指定inline Account::Account( co转载 2010-10-13 10:31:00 · 751 阅读 · 0 评论 -
类模板
类模板类模板,是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。 定义类模板的一般形式是: template class 类名 { 类声明体 }; 例如,template class Smemory {… public: void mput(T x); … } 表示定义一个名为Smemory的类模板,其中转载 2010-10-10 14:57:00 · 424 阅读 · 0 评论 -
友元函数和友元类
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。友元函数: 友元函数是可以转载 2010-10-10 14:20:00 · 375 阅读 · 0 评论 -
C++ Primer 第三版 练习2.4解答
下面的代码段是做什么的有什么严重错误?(注意指针pia 的下标操作符的用法是正确的在3.9.2 节中我们会解释其理由。)int *pi = new int( 10 );int *pia = new int[ 10 ];while ( *pi pia[ *pi ] = *pi;*pi = *pi + 1;}delete pi;delete [] pia;我来解释一下每行的代码语义://动态分配一转载 2010-05-12 11:17:00 · 731 阅读 · 0 评论 -
常量字符串为什么位于静态存储区?
char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率 例:char str1[] = "abc";char str2[] = "abc";co转载 2010-05-12 16:48:00 · 364 阅读 · 0 评论 -
C语言指针的初始化和赋值
最近写了一个小程序,遇到一点小问题,是关于指向字符串的指针的。由此一发不可收拾,好奇心驱使我决定研究一下指针的初始化和赋值规则。略有所得之后,执笔记下,以备后用。1、指针的初始化初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单:int *p;int a=25;int b[10];int *m=&a;int *n=b;i转载 2010-05-12 10:01:00 · 492 阅读 · 0 评论 -
易混淆的指针定义
用变量a给出下面的定义 a) 一个整型数(An integer) int a; b)一个指向整型数的指针( A pointer to an integer) int *a; c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer) int **a; d)一个有10个整型数的数组( An arra转载 2010-05-12 11:29:00 · 549 阅读 · 0 评论 -
C++中的内存分配
一、内存区的划分 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉转载 2010-05-12 16:37:00 · 637 阅读 · 0 评论 -
网络字节序
不同的 CPU 有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种 1 . Little endian :将低序字节存储在起始地址 2 . Big endian :将高序字节存储在起始地址 LE little-endian 最符合人的思维的字节序 地址低位存储值的低位 地址高位存储值的高位 怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说 低位值小,就应该放在内存地址小的地方,也即内存地址低位 反之,高位值就应该放在内存地址大的地方,也即内存地址高位 BE bi转载 2010-07-23 10:08:00 · 417 阅读 · 0 评论 -
访问数组集合类CTypedPtrArray
集合形状<br />集合类以它的“形状”及其元素类型为主要特性。形状是指集合组织和存储对象的方法。MFC 提供三种基本集合形状:列表、数组和映射(也称作字典)。您可以根据自己的特定编程问题选取最适合的集合形状。<br /><br />列表<br />列表类提供元素的有序、非索引列表,并作为双向链接表实现。列表有“头”和“尾”,不论是从列表头或列表尾添加或移除元素,还是在列表中间插入或删除元素,速度都非常快。 <br /><br />数组<br />数组类提供对象的动态调整大小、有序的整数索引数组。 <br转载 2010-08-12 11:38:00 · 1129 阅读 · 0 评论 -
VC6.0运行C程序
简单的问题,但还是要写下来,做个记忆。visul c++ 6.0运行c程序,要建一个正确的工程,然后建立一个正确的文本文档,然后运行。 1、建工程:打开c++,新建,选择Win32 Console Application,填上工程名字和保存路径,确定后选择“建立一个空工程”,确定后完成该步。 2、建文档:完成上步后。在左面的对话框中便会显示你的工程名字,此时再点击左上方的文件-->新建,选择C++ Source File,右面输入文件名字,点击确定。 3、程序部分:因为是c语言,头文件必须包含std库,加入原创 2010-10-08 11:01:00 · 1002 阅读 · 0 评论 -
error LNK2005: _DllMain@12 already defined in xxx.OBJ 解决办法
<br />用Visual C++编写DLL,如果在new project时选了MFC DLL,而后又想写成Regular DLL,即拥有自己的DllMain()入口函数,则在build时会遇到类似如下的link错误:<br /> error LNK2005: _DllMain@12 already defined in xxx.OBJ<br />几种解决方案:<br />1, 你只需要在工程设置里面,把<br />WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXP转载 2011-02-14 10:46:00 · 11023 阅读 · 3 评论