随笔分类 - C语言学习
摘要:class Test{private: char *ptr;pubic:};若Test test1 ("Hello");则调用的是构造函数若Test test2(test1;则调用的是拷贝构造函数若Test test2 = test1;则调用的是拷贝构造函数若Test test2; test2 = test1;则调用的是拷贝构造函数若Test test2 = "hello";则先调用的是构造函数生成临时对象,然后再调用拷贝构造函数初始化编译器总的原则是保证运算符两边的类型的一致性。
        阅读全文
            
摘要:1.构造函数构造函数必须和类名相同,所以要有多个构造函数必须使用重载。若没有显式的定义一个构造函数,则系统会默认生成一个默认构造函数。构造函数的作用是初始化对象,在对象被建立的时候会自动调用构造函数来对对象进行初始化。构造函数实际上是对成员变量赋值,只是第一个被调用的函数,所以习惯称之为构造函数。真正的初始化是,初始化列表,这个在构造函数之前调用,可以通过这种方式传参调用基类的构造函数。关键字inline,const,explicit,virtual,operator,priavte,protected,public运算符new,delete,typeid,dynamic_cast<&g
        阅读全文
            
摘要:i=(i&0x55555555)<<1|(i>>>1)&0x55555555;//交换相邻的两个位 i=(i&0x33333333)<<2|(i>>>2)&0x33333333;//交换相邻的两个两位 i=(i&0x0f0f0f0f)<<4|(i>>>4)&0x0f0f0f0f;//交换相邻的两个四位 i=(i&0x00ff00ff)<<8|(i>>>8)&0x00ff00ff;//交换相邻的两个八位 i=(i&
        阅读全文
            
摘要:字符串赋值给一个指针,则这个指针指向字符串串常量,例:char *p = "abdcd".。 赋值给一个对象或者通过拷贝函数则必须要有指针所指向的内存。strcpy(dest,"abcde");这里的dest需要有指向的内存。
        阅读全文
            
摘要:在文件中定义数组,声明为指针会造成数据当指针使用。在文件中定义指针,声明为数组会造成指针p里的数据的修改。int a[10];数组里的几个误区,a代表数组的首地址,&a[0]第一个数组元素的地址,其含义应该和a是一样的因为可以和int *p转换。&a代表这个数组地址,&a应该是和int (*P)[10]可以转换的,加+1代表整个数组的增加。指针变量是可以变的,而数组地址是固定的值。一维数组&数组名+1:移动一个数组的地址数组名+1:移动一个元素地址二维数组:&数组名+1:移动一个数组的地址数组名+1:移动一行元素地址数组名加【】+1:移动一个元素地址共同
        阅读全文
            
摘要:#if 后面只有两种值不是真(非0)就是假#ifdef自己根据实际情况选择是否定义和执行
        阅读全文
            
摘要:#include <stdio.h>int mystr_len(char *Desstr){if(Desstr == NULL) return 0;if(*Desstr == '\0'){ return 0;}else return (1+(mystr_len(++Desstr)));注意是先++}int main(){char *str = "hello";printf("%d",mystr_len(str));return 0;}
        阅读全文
            
摘要:运算符和函数的区别,运算符是可以直接在cpu中执行的(顾名思义用于运算的的符号),而函数则需要一层一层往下调用执行,new和malloc区别,我们在声明全局对象时,内存是由编译器分配的,而编译器是无法控制函数的执行的,new就像+ - * /一样用于内存分配,sizeof也是运算符是计算出所需要的内存,new运算符符内部会调用sizeof.
        阅读全文
            
摘要:其实是系统调用CRT,然后CRT调用的WinMain.一个C++应用程序的启动过程:a.shell调用CreateProcess激活App.exeb.系统产生一个进程内核对象,使用计数值加1c.系统为此进程产生4GB的地址空间d.加载器将必要的码加载到上述地址空间中,包括App.exe的程序,资料以及所需要的dll。它们被记录在可执行文件PE格式的.idata section中。e.系统为此进程建立一个执行线程,即主线程。执行线程才是CPU时间的分配对象。f.系统调用C Runtime函数库的StartUp codeg.startup code调用APP程序的WinMain函数h.APP程序开
        阅读全文
            
摘要:写在定义后面的变量,给这个变量赋值也就是初始化,因为变量只会定义一次,也就是这句只被执行一次,其他任何时候都不在执行。
        阅读全文
            
摘要:#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif#endif上面是从头文件 <stdio.h>中找出来的,在C++中NULL就是0值数据类型为整型,而在C中被强制转换成了指针,值也是零。字符串结尾的字符'\0'值同样是0,类型整型,也就是NULL是常量。
        阅读全文
            
摘要:不管在c还是c++中 都不存在void main() 对于 c来说 如果这样写main()则默认加上int,而c++规定只有int main()和int main(int argc,char *argv[])两种格式,所以void main()的写法是错误的。
        阅读全文
            
摘要:1. 动态链接库概述 (静态库和动态库、动态链接库的加载)概述: Windows API中的所有函数都包含在DLL中.其中有三个最重要的DLL:Kernel32.dll,它包含用于管理内存、进程和线程的各个函数; Uer32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数; GDI32.dll,它包含用于画图和显示文本的各个函数.2.静态库和动态库 静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB).在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE 文件),发布
        阅读全文
            
摘要:C语言是不支持函数重载的,c++通过编译方式的不同支持函数重载 如果按照extern "c"的方式编译则也不支持函数重载。
        阅读全文
            
摘要:1。父类构造函数,构造对象2。子类构造函数,构造对象3。子类析构函数,释放对象4。父类析构函数,释放对象
        阅读全文
            
摘要:string转CString CString.format("%s",string.c_str()); char转CString CString.format("%s",char*); char转string strings(char*); string转char* char*p=string.c_str(); CString转string strings(CString.GetBuffer()); 1,string->CString CString.format("%s",string.c_str()); 用c_s...
        阅读全文
            
摘要:子类与父类的构造函数2008-11-07 18:13:17|分类: c/c++ |标签: |字号大中小订阅先看下面的例子: #include <iostream.h> class animal { public: animal(int height, int weight) { cout<<"animal construct"<<endl; } ~animal() { cout<<"animal destruct"<<endl; } void eat() { cout<<"
        阅读全文
            
摘要:子类在继承父类的成员函数时,有public,protected,private继承方式,如果在父类是private则无论在子类还是外部都无法访问,如果在父类是public,protected则按照小于等于的原则进行继承。
        阅读全文
            
摘要:函数重载通过函数参数,和函数参数类型,以及参数个数判断,1.void output(int a int b)int output (int a, int b)不能构成重载2.void output(int a int b = 5) void output(int)也不能构成函数重载没有构造函数,默认构造函数由编译器生成。
        阅读全文
            
                    
                
浙公网安备 33010602011771号