Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230497
  • 博文数量: 96
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-14 11:43
文章分类

全部博文(96)

文章存档

2016年(41)

2015年(55)

我的朋友

分类: C/C++

2015-12-17 15:52:57

1. new malloc:
    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。
   对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函 数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free
   因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

点击(此处)折叠或打开

  1. class Obj
  2. {
  3. public :
  4.     Obj(void){ cout << “Initialization” << endl; }
  5.     ~Obj(void){ cout << “Destroy” << endl; }
  6.     void Initialize(void){ cout << “Initialization” << endl; }
  7.     void Destroy(void){ cout << “Destroy” << endl; }
  8. };

  9. void UseMallocFree(void)
  10. {
  11.     Obj *a = (obj *)malloc(sizeof(obj)); // 申请动态内存
  12.     a->Initialize(); // 初始化
  13.     //
  14.     a->Destroy(); // 清除工作
  15.     free(a); // 释放内存
  16. }

  17. void UseNewDelete(void)
  18. {
  19.     Obj *a = new Obj; // 申请动态内存并且初始化
  20.     //
  21.     delete a; // 清除并且释放内存
  22. }

2. strlen,length,sizeof
sizeof可以计算一个类型的大小空间 
length只是针对字符串而言的 

标准c里没有length这个函数 
只有在C++中的中才有length这个函数

在这里还要介绍下strlen.

sizeof("abcd")的值为5
length("abcd")的值为5
strlen("abcd")的值为4,不计算后面的'\0'
3. strcpy复制细节
strcpy复制时,会把末尾的'\0’也给复制进去,且覆盖一个字符。

4. 引入头文件语法
包含C++头文件有两种形式:
  1. #include
  2. #include “filename”

两种形式都会将头文件的内容替换在当前行。

两种形式的区别:

#1 – 以具体实现定义的顺序查找头文件, 即查找标准目录。

#2 – 先查找当前目录,然后是标准目录。

C++的头文件是没有后缀的,即没有”.h”. 当然加上也不会有错。

C库头文件的C++名字总是以字母c开头加上去掉后缀.h的C名字,例如:assert.h是C库头文件,对应的C++头文件是:cassert.




阅读(833) | 评论(0) | 转发(0) |
0

上一篇:python 包

下一篇:c++ stream 总结

给主人留下些什么吧!~~