C++相关知识

C++相对于C语言来说,有许多的优点,有继承性,有多态性,有封装和隐藏的作用。C++学习了一年了,课程也结束了,我们也必须掌握一些知识。

C++中应该掌握哪些知识

1.数据结构 
只有了解 线性表(包括栈,队列),树,图,集合等数据的逻辑结构和存储结构,才知道这些结构怎样用C++来描述它,并用C++来实现各种算法和操作 
2.算法分析 
只有掌握时间复杂度和空间复杂度的度量和经典的算法理论,才能设计出效率更高的算法.只有这样,才能成为c++高手. 
3.学习操作系统和编译的专业知识 
语言是与编译器和操作系统有关的,只有学好这些,才能成为好的C++程序员 

4.学习软件工程,特别是面向对象技术 

C++是面向对象的语言,必须深刻理解面向对象概念,才能够学好C++.另外,对于大型软件的C++程序开发,必须运用软件工程的思想,才能设计良好的,满足用户要求的软件.

一般情况下工作的基础都有C++的存在,所以我们也必须掌握c++的必要编程知识和语言。

C++中需要掌握的基本知识:

 一、#i nclude “filename.h”和#i nclude filename.h>的区别
         #  i nclude “filename.h”是指编译器将从当前工作目录上开始查找此文件
        #i nclude filename.h>是指编译器将从标准库目录中开始查找此文件

二、头文件的作用

    加强安全检测

    通过头文件可能方便地调用库功能,而不必关心其实现方式

三、* , &修饰符的位置

对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名

四、if语句

不要将布尔变量与任何值进行比较,那会很容易出错的。

整形变量必须要有类型相同的值进行比较

浮点变量最好少比点,就算要比也要有值进行限制

指针变量要和NULL进行比较,不要和布尔型和整形比较

五、const和#define的比较

const有数据类型,#define没有数据类型

个别编译器中const可以进行调试,#define不可以进行调试

六、C++函数中值的传递方式

有三种方式:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference)

七、函数体中的指针或引用常量不能被返回

Char *func(void)

{

char str[]=”Hello Word”;

//这个是不能被返回的,因为str是个指向栈内存的指针,不是一般的值,函数结束后会被注销掉

return str;

}

函数体内的指针变量并不会随着函数的消亡而自动释放


八 、内存的分配方式

    分配方式有三种,请记住,说不定那天去面试的时候就会有人问你这问题

   1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。

   2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。

   3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。

九、内存分配的注意事项

用new或malloc分配内存时,必须要对此指针赋初值。

用delete 或free释放内存后,必须要将指针指向NULL

不能修改指向常量的指针数据

十、sizeof的问题

记住一点,C++无法知道指针所指对象的大小,指针的大小永远为4字节

char a[]=”Hello World!”

char *p=a;

count sizeof(a) end; //12字节

count sizeof(p) endl; //4字节

而且,在函数中,数组参数退化为指针,所以下面的内容永远输出为4

void fun(char a[1000])

{

count sizeof(a) endl; //输出4而不是1000

}

十一、关于指针

1、 指针创建时必须被初始化

2、 指针在free 或delete后必须置为NULL

3、 指针的长度都为4字节

4、释放内存时,如果是数组指针,必须要释放掉所有的内存,如

char *p=new char[100];

strcpy(p,”Hello World”);

delete []p; //注意前面的[]号

p=NULL;//置为NULL

5、数组指针的内容不能超过数组指针的最大容易。

如:

char *p=new char[5];

strcpy(p,”Hello World”); //报错 目标容易不够大

delete []p; //注意前面的[]号

p=NULL;

十二、关于malloc/free 和new /delete

l malloc/free 是C/C+的内存分配符,new /delete是C++的内存分配符。

l 注意:malloc/free是库函数,new/delete是运算符

l malloc/free不能执行构造函数与析构函数,而new/delete可以

十三、C++的特性

C++新增加有重载(overload),内联(inline),Const,Virtual四种机制






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值