北大青鸟光谷校区 旗下网站:武汉官方招生网站 青鸟光谷校区网站 企业人才服务网 青鸟学社 青鸟在线

C++

武汉北大青鸟 > C++ > 软文 >

时间:2012-01-16 09:40作者:武汉北大青鸟 点击:
1、定义的声明的区别 :声明是 声明了标示符的存在 并没有为 其分配空间 ,而定义 是为其分配的一定的存储空间i



     1、定义的声明的区别  :声明是 声明了标示符的存在 并没有为 其分配空间   ,而定义 是为其分配的一定的存储空间int * p ;//这是对指针的声明 并且定义int p;//这是对整形变量的声明并且定义exern void show() ;==void show() ;对于函数来说只要没有函数体 那么都是声明  extern 表示对函数的声明 表示这个函数是再外部定义的 .我们在编译器下 同时写下int i;int i ;//会出现冲的定义的错误    编译器会理解为"我到底改用那个i呢?"

extern int i ;int i ;//那么就不会出现错误 原因是 第一个i是一个对于变量的声明 并没有分配存储空间  第二次 才为 i分配了存储空间

  2、  memcpy 函数  void *memcpy( void *dest, const void *src, size_tcount );这个函数我们在C中经常用到  ,其实 他 跟 strcpy很类似 都是向目的类型的地址 拷贝 n个 内存块注意这里的参数是 void*    因为我们是对内存块进行操作  所以可以是任意数据类型程序员对于内存的理解应该一视同仁 没有类型的区别 . 只是我们在使用内存的时候 将二进制代码 进行了 数据化了

    3、  malloc函数和 calloc函数    assert函数void *malloc( size_t size);void *calloc( size_t num, size_tsize );void assert( int expression );  //如果参数是FALSE那么 强制终止程序的运行  也就是 非0 退出这两个函数都是在堆中分配指定大小的void* 内存区域    只是calloc可以进行初始化而 malloc函数不进行初始化  .当malloc函数分配的内存在 第一次被使用的时候 那么 它的每个单元的数据可能是  0但是 如果分配来的这块内存区域被使用过了 那么就可能使任意数了 .这里我们会问free函数 做什么了?free函数 只是告诉编译器 我们之前用malloc分配的内存区域 可以重复使用而已,在一定程度上可以理解为释放现在想想 我们的 fopen 函数和 fclose函数 所  用到的  FILE结构体也是 由此 而来的

 

    4、标准库的发放形式.我们在 VC中用到  string.h  等等头文件 就可以使用里面定义的函数 等等     我们可以找到 String.h  但是我们却找不到他的实现文件 CPP (也就是源文件)

    在以往的C库的编写中我们通常 将具有 统一功能 和 分类的 一组 数据类型 和函数放在一个 头文件中定义   ,然后再原文件中实现 .然而我们到 微软提供的VC下面却找不到 这些对应文件的实现  .这是因为对于 微软而言 我们是使用VC的用户 ,虽然我们是软件开发者,但是我们是在微软的平台下使用。

    微软给我提供了的借口是 头文件+动态链接库的 形式  而不是 头文件+源文件的形式 .对于微软而言 不会给我们 库的实现部分 .只需要给我们提供动态链接库,我们就可以使用它们所定义的函数 以及类型

   5、重复定义的问题#ifndef test #define final #endif

    在一个较大的工程中我们可能会用到多个头文件  架设 我们在多个头文件中同时包含了 一个头文件 那么 在 编译器进行编译链接的时候就会发生 数据类型或者 函数的 重复定义问题 为了解决这个问题 那么我们要用到 预编译指令如果在  lib.h的头文件下有 int i ; 为了防止被重复定义 那么 我们在 lib.cpp中应该这样定义#ifndef  lib_H_ int  ;#endif  ;这样就可以防止统一数据 被重复定义的问题

    6、  C++的封装C++的封装  这是一个歧义的问题?


   有些人把封装用在解释隐藏上 ,而我觉得用来解释类这一个抽象数据类型很合适  、在以前的C中  struct 结构体中我们吧 一组相关的 属性组合成一个结构体  那么这个结构体 只是作为数据的封装,没有其他的实际意义。但是在C++中则不同了。类中可以加入函数 ,等操作行为 使面向对象的思想得以很好的实现,一个类代表一类事物,一个类的实例代表一个对象 ,这个对象有自己的属性和行为 .我们把操作的函数封装在类中 也可以避免C中函数命名重复的问题 .

    7、联合 Union  枚举
  enum的简单实用对于联合 来说他的大小是成员中数据类型字节最大的存储 我们在使用的时候 使用数据类型中的一个 可以节约存储空间enum其实定义的是基于 0开始的 一些数据成员 当然我们可以对枚举成员进行赋值 简单应用如下#include <iostream> using namespace std ;enum Day { one =433,two ,three };union Me { int a ;char buf[100]  ;};void main(){ Day a =one;Day b= two ;cout<<a<<endl ;cout<<b<<endl ;Me me1,me2 ;me1.a=100 ;strcpy(me2.buf,"dsfds") ;cout<<"Union中的数字:"<<me1.a<<endl ;cout<<"Union中的字符串:"<<me2.buf<<endl;cout<<"Union的大小是:"<<sizeof(Me)<<endl ;

}

 

(责任编辑:admin)

将本文分享到:

------分隔线----------------------------
一分钟了解...
优秀毕业生

姓名:张磊

毕业于:2011-01

就业单位:广东南洋长胜酒店有限公司

职位:系统维护工程师

月薪:8000

姓名:王远洋

毕业于:2010-01

就业单位:武汉四通创新集成有限责任公司

职位:项目经理

月薪:8000

姓名:魏德强

毕业于:2007-01

就业单位:北京国通创安报警网络技术公司

职位:网络技术工程师

月薪:20000

姓名:胡瑞峰

毕业于:2010-02

就业单位:蓝迅电脑网络技术服务公司

职位:CEO

月薪:100000

姓名:廖思雨

毕业于:2011-02

就业单位:武汉擎天网络工程有限公司

职位: 技术支持工程师

月薪:

姓名:李丙超

毕业于:2011-05

就业单位:杭州星网视易信息系统有限公司

职位:技术支持

月薪:5500

姓名:郑沆

毕业于:2011-06

就业单位: 浙江盘石信息技术有限公司

职位:技术支持工程师

月薪:5000

姓名:宋林峻

毕业于:2011-05

就业单位:东风悦鼎经贸有限公司

职位:网络管理员

月薪:4500

姓名:黄鹏

毕业于:2011-2

就业单位:武汉骏升科技有限公司

职位:销售工程师

月薪:4000

姓名:康健

毕业于:2011-03

就业单位: 杭州百通快车网络技术服务有限公司

职位:网络工程师

月薪:6000

在线问答

请输入您的手机号,我们将在工作日一小时之内,通过手机短信回复给您。
 

本校是华中地区成立时间最早、规模最大、开设科目最全的北大青鸟 IT职业教育培训学院。自2003年以来毕业学员4000余人,由本学院推荐就业于北京、上海、深圳、广州、武汉、成都等地。

主要开设培训项目:BENETJAVA/.NET/ANDRIOD网络安全网络营销培训等

联系我们
电话:027-878506402 87506403
您还可以通过以下方式与我们联系:
关注我们
  • 官方微博
  • 光谷名师堂
 
Copyright 2003-2011 武汉祉满教育有限公司 版权所有 鄂ICP备11019421号