C语言是有史以来最为重要编程语言,写外挂、做黑客必须掌握的语言。
C/C++是永远不过时的贵族语言,除了纯应用的公司 C/C++市场需求量大,职位数量多,仅次于Java。
适用领域?
C语言可以写网站后台,写出绚丽的GUI界面,C语言可以写出大型游戏的引擎,C语言可以写操作系统和驱动程序,并且只能用C语言
编写,linux操作系统的全部源代码都可以在网上找到,深入了解操作系统的运行秘密,懂C语言就能看懂。
C语言是语法最简单的语言。
32个关键字和9种语句,34个运算符,一天写300行代码。(坚持敲代码),多学习一些优秀代码。
学习目标:1.具有一定的编程能力,具有一定的调试能力,所有的C语言语法,关键字,操作符倒背如流,运行如飞。
2.掌握编程技巧和简单算法,具备解决问题的能力。
3.成功应对世界5百强C语言面试的一系列问题。
小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
1、结构体成员默认的属性是公共的,而类成员默认是私有的。
C++的结构体也可以设置 public,private。但C语言中不行。
2、内联函数和外联函数
在类体内实现的成员函数称为内联函数,在调用处用内联函数体的代码来替换,提高运行速度。在类体外实现的成员函数称为外联函数。外联函数转换成内联函数时只要在外部函数定义前加上 inline 就可以,不需要在类内部声明处加。
3、不宜使用内联函数的两种情况:
1)函数体代码较长,使用内联函数将导致内存消耗代价较高。
2)如果函数体出现循环,那么执行函数体内代码的时间要比函数调用的开销大。
4、 this 指针:
this 指针只有在成员函数中才确定其存放的位置,并可以使用 this 指针访问数据成员。使用 this 指针可以预防成员函数形参和成员变量重名,导致函数中成员变量被隐藏出现的问题。
5、构造函数是否会出现函数形参和成员变量重名问题?
不会,构造函数的初始化表有严格的格式定义,系统能够感知到括号外面是类的成员变量,括号内是构造函数的参数。
6、 const 变量在 C 和 C++ 中的区别:
C 语言中,const修饰的变量可以通过访问变量的地址,间接修改变量的值,但在 C++中不行。因为 C++中的 const 通常当成编译器的常量来处理,也就是说编译器不为 const常量分配空间,只是在编译时将它的值保存在名字表中,所以通过内存地址间接修改常量的值,不管修改多少次,其结果都是存放在名字表中的初值。若想让 const 常量值和其对应地址中的同步,加上 volatile 关键字就行(例如:volatile const int a = 1;)
小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
7、C++中,const 在类与对象中的应用:
1)常量数据成员的应用:const 数据成员的初始化必须在构造函数的初始化表中进行。
2)函数参数为常量的应用:类中函数成员的参数通常使用引用,表示用源头的数据,不会再复制一份。如果希望传递给函数成员的参数不被破坏,就需要定义成 const 。(例如:void set(const int &x) { } )
3)常量成员函数与常量对象的使用方法:
对象调用常量函数规则:
1、非常量对象既可以调用常量函数,也可以调用非常量函数。
2、常量对象可以调用常量函数,不可以调用非常量函数。
3、常量函数和非常量函数重载时,常量对象调用常量函数,非常量对象调用非常量函数。
8、突破常量成员函数修改数据成员的限制:
1)为什么不能改?
每个成员函数隐藏了一个指向对象本身的 this 指针参数,this 指针的类型取决于对象,如果是常量对象,this 当然就是常量指针。此时,我们不能通过 this 指针去修改对象对应的内存块。但这是编译器的限制,有两种方法可以突破此限制:
1、将 this 常量指针转换成非常量指针:
将 this 常量指针的属性去掉,可以使用 const_cast 运算符完成。
( DEMO *p = const_cast(this) )
2、修改数据成员的存储类型,允许该数据成员可以在常量函数中被修改:
传统的存储类型有 auto, static, register, extern 四种。
auto:表示数据块作用域内局部变量的默认存储类型。
static:表示全局变量的默认存储类。
register:表示提示编译器把局部变量或函数的形参尽可能放入CPU的寄存器中,以便快速访问。
extern:表示全局变量可以被各个对象模块访问。使用extern 关键字时,表示变量已经在别处定义了,所以不能在此处初始化。
C++中又引用了一种新的存储类型:mutable。该存储类型只能用于类的数据成员,不能用于普通变量。具有 mutable 属性的数据成员允许常量函数修改类的 mutable 的数据成员。(mutable int a;)
9、static 常见用法:
1)静态全局变量和普通全局变量:
作用域不同,前者作用于当前源文件,后者作用于整个工程(其他文件可以通过 extern引用)。都存储在全局数据区,初始化为0。
2)静态局部变量和普通局部变量:
1、存储位置不同。前者在全局数据区,作用域是局部的,外部不能调用,不会因为某个子函数的完成而释放内存空间;后者存放在栈区。
2、默认初始值不同。如果没有初始化,静态局部变量默认的初值是0,普通局部变量的初值是随机值。由于静态局部变量的生命周期是全局的,所以对其初始化只会执行一次,后面遇到合法初始化操作将自动跳过。而局部变量的生命周期是局部的,所以合法的初始化动作每次都会执行。
3)静态函数和普通函数:
主要是作用域不同,静态函数的作用域是当前文件,对该工程其他的源文件是隐藏的、不可见的,而普通函数的作用域在整个工程都是可以调用的。
10、静态成员变量:
① 静态数据成员是属于整个类的,而不是属于某个对象的。不管实例的对象有多少个,它们都共用同一个静态数据成员。普通静态白能量如果没有初始化,默认为0,而静态成员变量必须手动初始化才能用。它需要在类外进行静态变量初始化。
格式:数据类型? 类名 :: 静态成员名 = 初始值;
例如: int? DEMO :: b = 100;
② 静态数据变量的特点:
1)即使没有实例对象,仍然可以访问静态数据成员。
2)静态数据成员存储在全局数据区中,因此静态数据成员定义时需要分配空间,所以不能在类声明中初始化。
小编推荐一个学C语言/C++的学习裙【 六二七,零一二,四六四 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
静态数据变量的独特访问方式:
格式:对象名.成员名。
例如:cout<
在成员函数中可以通过this 指针定义静态数据成员。
遇到 const 和 static 双重属性的数据成员时,初始化动作只能在声明时进行。
③ 对于成员函数来说,static 和 const 不能共存。
静态数据成员可以时 const 的,但是静态函数成员不能是常量函数。如果类的成员函数是 static的,该成员函数属于类的一部分,不再独立属于任何对象,所以静态成员函数中没有指针,但是常量成员函数的第一个参数是常量指针。所以不能共存。
11、静态成员函数:
静态成员函数是类本身的一部分,不独立属于某个对象,因此 this 指针的存在就没什么意义了,所以静态函数无法访问普通的成员变量,它只能调用其余的静态成员。
12、静态对象:
用法和静态变量类似,只不过其储存位置放在了全局数据区。
几点学习建议:
1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。
3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。
4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。
网友评论