学习遇到简单的东西
舒夜潇潇忆情
2018-09-10到2021-07-04 看完147本书
展开
-
动态内存的传递
void GetMemory(char* p,int num){p =(char*)malloc(sizeof(char)*num); };int main(void){char* str = NULL;GetMemory(str,10);strcpy(str,"Hello");//崩溃,GetMemory()函数不能传递动态内存,并且始终是nullretu原创 2015-02-15 10:18:05 · 413 阅读 · 5 评论 -
进程和线程的区别
进程和线程的区别 什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别: 进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。 一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程原创 2015-03-05 09:25:55 · 349 阅读 · 0 评论 -
单链表
单链表是数据结构中最简单的,它的每一个节点只有一个指向后一个节点的指针,最后一个节点指向null建立#include #include typedef struct node{ int data; node* next;} node;node* create(){ int i = 0; node* head = NULL; node* p = NULL; no原创 2015-03-05 15:21:44 · 477 阅读 · 1 评论 -
结构、联合、枚举
结构是对若干个类型变量的组合,占用的空间为每个变量占用空间的总和(考虑字节对齐为1的情况)。联合是对若干个类型变量的组合,占用的空间取决于占用空间最大的变量枚举是对整数区间的自定义类型,用户可以为区间中的值取名,默认时,第一个名称对应为整数0.原创 2015-03-06 16:02:18 · 421 阅读 · 0 评论 -
单位
一般来说,档案容量使用的是二进制的方式,所以1GBytes的档案大小实际上为:1024*1024*1024Bytes那么大速度单位则常使用十进制,所以1GHz就是1000*1000*1000Hz的意思原创 2015-03-09 10:05:48 · 303 阅读 · 2 评论 -
拷贝构造函数
C++允许同类型变量之间的赋值,int a = 100; int b = a;对象是一种复杂的类类型,很多时候我们需要用一个对象去创建另一个对象,或者将一个对象赋值给另一个对象,这时需要用拷贝构造函数(当用已存在的对象为了一个新的对象赋值时,既要给新对象的数据成员分配空间资源,也要给新对象的数据成员赋予相应的值,即既要创建新对象,又要用原对象的值初始化。)定义方法:该构造函数的参数原创 2015-03-09 10:12:11 · 396 阅读 · 3 评论 -
this指针
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。使用:一种情况就是,在类的非静态成原创 2015-03-09 10:16:16 · 454 阅读 · 3 评论 -
走近 STL
学习过C++程序设计语言(也就是说学习过Template),但是还没有接触过STL的STL的初学者。什么是泛型程序设计 我们可以简单的理解为:使用模板的程序设计就是泛型程序设计。就像我们我们可以简单的理解面向对象程序设计就是使用虚函数的程序设计一样。 STL是什么 作为一个C++程序设计者,STL是一种不可忽视的技术。Sandard Template Library (STL)转载 2015-03-09 10:56:12 · 361 阅读 · 0 评论 -
数据结构之前期定义1
ADT 抽象数据类型定义抽象数据类型ADT 抽象数据类型名{数据对象:数据关系:基本操作:}ADT 抽象数据类型名数据对象和数据关系的定义用伪码表示,基本操作的定义格式为 基本操作名(参数名)初始条件:操作结果:基本操作有两种参数:赋值参数值为操作提供输入值;引用参数以&打头,除可提供输入值外,还将返回操作结果。原创 2015-03-11 09:35:44 · 394 阅读 · 0 评论 -
数据结构之前期定义2
ADT Triplet{数据对象:D={e1,e2,e3|e1,e2,e3∈Elemset(定义了关系运算的某个集合)}数据关系:R1={,}基本操作:InitTriplet(&T, v1,v2,v3)//操作结果:构造三元组T,元素e1,e2和e3分别被赋以参数v1,v2和v3的值DestroyTriplet(&T)//操作结果:三元组T被销毁Get(T,i,原创 2015-03-11 09:55:28 · 518 阅读 · 0 评论 -
STL
STL提供了一组表示容器、迭代器、函数对象和算法的模板。容器是一个与数组类似的单元,可以存储若干个值。STL是同质的,即存储的值的类型相同;算法是完成特定任务,(如对数组进行排序或在链表中查找特定值)的处方;迭代器能够用来遍历容器的对象,与能够遍历数组的指针类似,是广义指针;函数对象是类似于函数的对象,可以是类对象或函数指针(包括函数名,因为函数名被用于指针)。STL使得能原创 2015-03-11 14:07:54 · 315 阅读 · 0 评论 -
内存泄露
char *c = new char[1000];1.一般的变量分配如你的int i =1000;这个i是在程序栈中分配的,程序运行结束后,程序会自动释放掉程序栈中的数据。2.而new是动态的分配内存,这个内存在堆中分配的,堆中分配的内存 ,程序不会自动清除这个内存,只有靠程序员自己手动释放,也就是要用delete操作3.new分配的是指向内存单元的指针的值,所以应该用char *c4.释原创 2015-03-13 10:42:06 · 362 阅读 · 1 评论 -
虚函数表
C++中虚函数通过一张虚函数表来实现,在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其内容真实反映实际的函数,这样,在有虚函数的类的实例中,这张表被分配在了这个实例的内存中,所以当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得很重要,它就像地图,指明了实际所所应该调用的函数。编译器必须保证虚函数表的指针存在于对象实例中最前面的位置,意味着我们通过对象实例原创 2015-03-16 11:15:39 · 392 阅读 · 3 评论 -
面试题
请说出const与#define 相比,有何优点? 答案: Const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。原创 2015-03-04 09:21:03 · 395 阅读 · 7 评论 -
Lesson2: 掌握C++基本语法
1. C++主要特点:封装性(Encapsulation):把数据与操作数据的函数组织在一起,使程序结构更加紧凑,提高类内部数据的安全性。继承性(Inheritance):增加了软件的可扩充性及代码重用性;多态性(Polymorphism):使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用2. C++中几个特性的实现技术和其它要注意的地方转载 2015-03-03 14:20:29 · 498 阅读 · 3 评论 -
Lesson1: Windows程序运行原理及程序编写流程
窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与Lessonecl调用规范的比较,初学者常犯错误及注意事项。1. Windows API与Win32 SDK操作系统提供了各种方便开发Windows应用程序的编程接口,所的函数都在Windows。h头文件中声明。Win32 SDK(Software Develo转载 2015-03-03 11:07:32 · 431 阅读 · 1 评论 -
句柄
windows环境中,句柄是用来标识 项目 的。项目包括1.模块 module2.任务 task3.实例 instance4.文件 file5.内存块 block of memory6.菜单 menu7.控制 control8.字体 font9.资源 resource(包括图标 coin 光标cursor 字符串string等)10.GDI对象(GDI原创 2015-02-15 10:45:40 · 441 阅读 · 1 评论 -
指针与句柄的区别
指针对应着数据在内存中地址,利用指针可以自由修改数据。windows并不希望一般程序修改其内部数据结构,不安全。所以给每个使用GlobalAlloc等函数声明的内存区域指定一个句柄,即指向指针的指针。句柄和指针都是地址,不同1.句柄所指向的可以是一个复杂的结构,并且可以与系统有关,例如线程的句柄,它可以指向一个类或者结构,而且和系统有很密切的关系,当一个线程由于不可预料的原因而终止时,原创 2015-02-15 11:17:52 · 582 阅读 · 0 评论 -
strcpy函数与memcpy函数
都是标准C库函数strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。遇到结束符\0结束memcpy提供一般内存的复制。即memcpy对于需要赋值的内容没有限制,因此用途更广。用参数size决定复制多少个字符区别:1.复制内容 不同,strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体原创 2015-02-15 11:29:46 · 312 阅读 · 0 评论 -
数组越界 struct class
C++不会自动检查数组越界,程序编译时不会报错。C的struct与C++的class区别struct只是作为一种复杂数据类型定义,不能用于面向对象编程。C++中的struct和class的区别对于成员访问权限及继承方式,class中默认的是private,而struct中则是public。class还可以表示模板类型,struct则不行。原创 2015-02-15 11:30:34 · 360 阅读 · 0 评论 -
全局对象 静态数据成员
静态数据成员的优势1.静态数据成员没有进入程序的全局名字空间,因此不存在程序中其他全局名字冲突的问题2.使用静态数据成员可以隐藏信息,因为静态成员可以是private,而全局对象不能。原创 2015-02-15 11:48:33 · 424 阅读 · 0 评论 -
散
相对全局变量,静态数据成员的优势1.静态数据成员没有进入程序的全局名字空间,因此不存在程序中其他全局名字冲突的问题2.使用静态数据成员可以隐藏信息,因为静态成员可以是private,而全局对象不能。无论在狗仔函数初始化列表中初始化成员,还是在构造函数体内对它们赋值,最终结果相同。不同:构造函数在初始化列表初始数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值原创 2015-02-15 11:48:45 · 334 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系(转)
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如: short f();printf(原创 2015-02-17 09:40:55 · 320 阅读 · 1 评论 -
面试问题
问题一、请简单的介绍一下你自己吧!1. 你的从业时间 你从事相关的工作有多长了 2. 你的教育背景 你是否受过良好的教育 3. 你的工作经验 你是否有过具有一定的工作经验 4. 你的项目经验 你是否有过丰富的项目经验 5. 你与众不同之处 你是怎么进行项目开发的,有什么特别之处,或者你在哪些项目中取得过哪些成功,原创 2015-02-27 09:42:15 · 283 阅读 · 1 评论 -
2011年五一版年最新软件开发面试进行曲之技术面试(项目经验)
分析自己,对自己进行一个准确的定位,选择一个合适的求职方向!并结合自己的实际个人情况来写一份针对性很强的个人简历!个人简历就是个人的广告!好的简历可以更受到用人需求单位青睐!好的简历才能让你获得面试的机会!面试的技术内容并不会有想象中的那么难,主要注重基础和细节!细节决定一切!所以列罗的那些知识点是需要下功夫去准备的!当然列罗的那些知识点只是一些在面试中经常会出现的问题集!每家企业都可能超出这些知转载 2015-02-28 09:44:40 · 443 阅读 · 2 评论 -
日语自我介绍
はじめまして私は刘叶と申しますが、 初次见面我叫刘叶私の故郷は黒竜江ですそこは中国の北の方にあります。 我的故乡是黑龙江北趣味はアニメを见ることです、そして##(読书 旅行)も好きです 兴趣是看动漫 也喜欢(读书 旅游)私の一番好きな映画は「3 Idiots」といいます 。 我最喜欢的电影叫《三个白痴》ですからこれが好きなんです 所以喜欢它これから、よろしくお愿いい原创 2015-03-02 10:16:56 · 558 阅读 · 0 评论 -
虚函数表
C++中的虚函数的实现一般是通过虚函数表(C++规范并没有规定具体用哪种方法,但大部分的编译器厂商都选择此方法)。类的虚函数表是一块连续的内存,每个内存单元中记录一个JMP指令的地址。编译器会为每个有虚函数的类创建一个虚函数表,该虚函数表将被该类的所有对象共享。类的每个虚成员占据虚函数表中的一行。如果类中有N个虚函数,那么其虚函数表将有N*4字节的大小。虚函数(Virtual Func原创 2015-03-03 09:05:45 · 429 阅读 · 2 评论 -
重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?
从定义上来说: 重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 重写:是指子类重新定义父类虚函数的方法。 从实现原理上来说: 重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):原创 2015-03-03 09:38:05 · 1541 阅读 · 0 评论 -
数据结构之前期定义3
(1)预定义常量和类型#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;//Status是函数的类型,其值是函数结果状态代码(2)数据结构的表示(存储结构原创 2015-03-17 10:51:02 · 442 阅读 · 1 评论 -
抽象数据类型Triplet的表示和实现
typedef ElemType *TripletStatus InitTriplet(Triplet &T, ElemType v1, ElemType v3){ T = (Elemtype*)malloc(3*sizeof(Elemtype)); if(!T) exit(OVERFLOW); T[0] = v1; T[1] = v2; T[2] = v3; return OK;原创 2015-03-17 11:31:11 · 1491 阅读 · 1 评论 -
静态联编和动态联编
联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。静态联编是指在编译阶段就将函数实现和函数调用关联起来,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用转载 2015-01-08 09:50:29 · 525 阅读 · 0 评论 -
类模板
模板 是一种参数化的类或函数,即类的形态(成员、方法、布局等)或函数的形态(参数、返回值等)可以被参数改变。(模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属)模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为函数模板的定义格式template (){ }参数化类型名表又称模板参数表,多个表项用逗号原创 2014-10-20 17:16:41 · 395 阅读 · 0 评论 -
注意不要将函数命名与系统函数相同
template T max(T a , T b){return a > b ? a:b;}int main(){cout cout return 0; }原创 2014-10-20 16:54:06 · 537 阅读 · 0 评论 -
this
this指针是指向被调用函数所在对象本身的指针,存在于类的非静态成员函数中。全局仅有一个this指针,当一个对象被创建时,this指针就存放指向对象数据的首地址。使用:1.在类的非静态成员函数中返回类对象本身的时候 直接使用 return *this; 2.当参数与成员变量相同时,this->n = n;静态成员函数是被这个类所有的对象共有原创 2014-10-20 15:33:21 · 343 阅读 · 0 评论 -
类声明结束一定要有分号,否则
1>d:\myworkfiles\c++project\learn929\learn929\manfunction.cpp(4) : error C2533: “Man::{ctor}”: 构造函数不能有返回类型1>d:\myworkfiles\c++project\learn929\learn929\manfunction.cpp(12) : error C2264: “Man::Man”:原创 2014-10-14 15:36:31 · 1602 阅读 · 0 评论 -
预处理器
#include 设施是C++预处理器的一部分,预处理器处理程序的源代码,在编译器之前进行。预处理器用指定的头文件内容代替每个#include。无论头文件以何种格式保存,一般都含有支持分别编译所需的类定义及变量和函数的声明。我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。预处理器变量的名字在程序中必须是唯一的,任何与预处理器变量相匹配的名字的使用都关联到该预处理原创 2014-11-06 17:31:15 · 550 阅读 · 0 评论 -
WINAPI 函数 WaitForSingleObject
DWORD WaitForSingleObject(HANDLE hObject, DWORD dwMilliseconds);当线程调用该函数时,第一个参数hObject标识一个能够支持被通知/未通知的内核对象(前面列出的任何一种对象都适用)。第二个参数dwMilliseconds允许该线程指明,为了等待该对象变为已通知状态,它将等待多长时间。调用下面这个函数将告诉系统,调用函数准备转载 2014-11-27 14:58:45 · 616 阅读 · 0 评论 -
c++ BYTE、WORD与DWORD类型
在Visual C++ 6.0中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下:typedef unsigned char BYTE;typedef unsigned short WORD;typedef unsigned long DWORD; 也就是说B转载 2014-11-27 14:15:35 · 1360 阅读 · 0 评论 -
VC项目文件说明
.opt 工程关于开发环境的参数文件。如工具条位置等信息; .aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管他. .clw ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建. .dsp (Dev原创 2014-11-27 11:39:47 · 318 阅读 · 0 评论 -
strlen与sizeof
char strInput[7] = "ABCDEF"sizeof(strInpuf) = 7;原创 2014-08-21 15:04:41 · 340 阅读 · 0 评论