挑战30天 C/C 入门极限系列教程-

来源:百度文库 编辑:神马文学网 时间:2024/04/28 20:07:57
《挑战30天 C/C++ 入门极限系列教程》引言
作为一个长篇的C++入门教程,无论如何也应该有这么个引言,可是文笔并不好的我,想了很久也不知道该如何写……
仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C++殿堂的策论。
几年并不算很长的编程经验,使我感触颇深,痛苦迷茫,以及成功后的喜悦一直交替着伴随我,爱好编程的我,在学习期间也被很多很多学习的困难疑惑所阻挡,甚至不只一次的想放弃……>>>阅读全文
·在C/C++中利用数组名作为涵数参数传递排序和用指针进行排序的例子
在C/C++中利用数组名作为函数参数传递排序和用指针进行排序的例子……>>>阅读全文
·C/C++中指针学习的两个绝好的例子
指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout<<*x"|"x;,当定义了int *x;后对x=&a的理解的问题。仔细阅读和联系下面的两个例子我想指针问题就不是难点了……>>>阅读全文
·C++中的const限定修饰符
const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用……>>>阅读全文
·C++下的引用类型
引用类型也称别名,它是个很有趣的东西。在C++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数……>>>阅读全文
·C++中布尔类型
布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真与假的概念。我们通常使用的方法是利用他来判断条件的真与假……>>>阅读全文
·C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来……>>>阅读全文
·C/C++中数组和指针类型的关系
对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识……>>>阅读全文
·关于C++中的内联函数(inline)
在C++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭……>>>阅读全文
·C++中函数重载的相关知识
函数重载是用来描述同名函数具有相同或者相似功能,但数据类型或者是参数不同的函数管理操作的称呼……>>>阅读全文
·C++中关于堆内存(heap)的概念和操作方法
堆内存是什么呢?我们知道在C/C++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题(bc或者是在老的标准中是alloc.h),它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后我们要使用free()函数来释放动态开辟的内存空间……>>>阅读全文
·C/C++中字符串常量的不相等性,以及字符串的copy
在一个判断两个内容为test的字符串常量是否相等的例子中,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在C/C++却不是这样。为什么呢?答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就不会得到我们所需要的结果,如果要进行是否相等的比较应该使用strcmp()这个涵数进行比较……>>>阅读全文
·C/C++中字符指针数组及指向指针的指针的含义
就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。看看文章中给出的代码,并注意看代码中的注解……>>>阅读全文
·C/C++中利用空指针简化代码,提高效率
这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销……>>>阅读全文
·C/C++中命令行参数的原理
很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:\1.txt d:\ 。 在C/C++中,命令行参数的传递是利用main进行形参传递实现的……>>>阅读全文
·exit()子程序终止函数与return()函数的差别
在main函数中我们通常使用return (0);这样的方式返回一个值。但这是限定在非void情况下的也就是void main()这样的形式。exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统……>>>阅读全文
·C/C++中的函数指针(即指向涵数的指针)的含义
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢……>>>阅读全文
·对前面对于引用的C++入门教程的补充说明
由于引用本身就是目标的一个别名,引用本身的地址是一个没有意义的值,所以在C++中是无法取得引用的内存地址的。取引用的地址就是取目标的地址,C++本身就根本不提供获取引用内存地址的方法……>>>阅读全文
·C/C++中的结构体
什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的……>>>阅读全文
·C/C++中结构体(struct)知识点强化,重点中的重点,链表的学习!
在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构。 结构体可以看做是一种自定义的数据类型,它还有一个很重要的特性,就是结构体可以相互嵌套使用,但也是有条件的,结构体可以包含结构体指针,但绝对不能在结构体中包含结构体变量……>>>阅读全文
·C++面向对象的编程入门篇-----类(class)
上两篇内容我们着重说了结构体相关知识的操作。以后的内容我们将逐步完全以C++作为主体了,这也意味着我们的教程正式进入面向对象的编程了。前面的教程我已经再三说明,结构体的掌握非常重要,重要在哪里呢?重要在结构体和类有相同的特性,但又有很大的区别,类是构成面向对象编程的基础,但它是和结构体有着极其密切的关系……>>>阅读全文
·C++面向对象的编程入门篇--类构造函数与析构函数
请注意,这一节内容是C++的重点,要特别注意!我们先说一下什么是构造函数。上一个教程我们简单说了关于类的一些基本内容,对于类对象成员的初始化我们始终是建立成员函数然后手工调用该函数对成员进行赋值的,那么在C++中对于类来说有没有更方便的方式能够在对象创建的时候就自动初始化成员变量呢……>>>阅读全文
·理解C++面向对象程序设计中的抽象理论
很多书在一开始就开始学习josephus问题,为了让大家前面学起来较为容易我把前面涉及到此问题的地方都故意去掉了,现在我们已经学习过了结构体和类,所以放在这里学习可能更合适一些……>>>阅读全文
·C++类对象的复制-拷贝构造函数(深拷贝,浅拷贝)
普通对象和类对象同为对象,他们之间的特性有相似之处也有不同之处,类对象内部存在成员变量,而普通对象是没有的,当同样的复制方法发生在不同的对象上的时候,那么系统对他们进行的操作也是不一样的,就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的……>>>阅读全文
·C++类静态数据成员与类静态成员函数
在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢……>>>阅读全文
·C++友元的入门教程
友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但矛盾的是,即使是最大限度的保护,同样也破坏了类的封装特性,这即是友元的缺点,在现在cpu速度越来越快的今天我们并不推荐使用它,但它作为C++一个必要的知识点,一个完整的组成部分,我们还是需要讨论一下的……>>>阅读全文
·C++中类的继承特性
整个C++程序设计全面围绕面向对象的方式进行,类的继承特性是C++的一个非常非常重要的机制,继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分。可以说这一章节的内容是C++面向对象程序设计的关键……>>>阅读全文
·C++类的多态与虚函数的使用
类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基础的读者注意……>>>阅读全文
·类的分解,抽象类与纯虚函数的需要性
为了不模糊概念在这里我们就简单的阐述一下类的分解,前面的教程我们着重讲述了类的继承,继承的特点就是,派生类继承基类的特性,进行结构扩张,这种逐步扩张,逐步在各派生类中分解彼此不同特性的过程其实就是类的分解……>>>阅读全文
·C++类的多重继承与虚拟继承
在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承……>>>阅读全文
·C++类的继承与多重继承的访问控制
在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论……>>>阅读全文
·C++中的运算符重载函数及其值返回状态
运算符重载是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观。对于普通对象来说我们很自然的会频繁使用算数运算符让他们参与计算,但是对于自定义类的对象来说,我们是无论如何也不能阻止写出像下面的代码一样的程序来的……>>>阅读全文
·C++中利用构造函数与无名对象简化运算符重载函数
类的构造函数起了显式或者隐式转换的作用,转换过程实质是产生一个类的无名对象,类的运算符重载函数的参数就是这个无名对象的引用,所以参数的顺序也不再是问题,代码的运行效率也得到提高,无需再定义只是参数顺序不同,内容重复的运算符重载函数了……>>>阅读全文
·对C++递增(增量)运算符重载的思考
在前面的章节中我们已经接触过递增运算符的重载,那时候我们并没有区分前递增与后递增的差别,在通常情况下我们是分别不出++a与a++的差别的,但的确他们直接是存在明显差别的……>>>阅读全文
·C++运算符重载转换运算符
为什么需要转换运算符? 大家知道对于内置类型的数据我们可以通过强制转换符的使用来转换数据,例如(int)2.1f;自定义类也是类型,那么自定义类的对象在很多情况下也需要支持此操作,C++提供了转换运算符重载函数,它使得自定义类对象的强转换成为可能……>>>阅读全文
·C++运算符重载赋值运算符
自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数……>>>阅读全文
·C++的iostream标准库介绍以及对左操作符与右操作符的重载(1)(2)(3)
我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个C++的标准库组件提供给程序员使用……>>>阅读全文(1)(2)(3)
·Eclipse3.01 + MinGW3.1配置标准C/C++开发环境
学习c语言和C++的人首先需要的是一个可提供练习的开发平台,对于C++来说,可供使用的工具平台有很多,包括Borland 的 C++ builder 和 Microsoft 的 Visual Studio 系列,的确他们都是非常不错的。对于我们此文的主角,Eclipse来说,很多人都知道它是为JAVA开发而生的,但今天我们要说的是如何利用它与MinGW配合,设置出高效的C++开发平台……>>>阅读全文