摘要:粤嵌教育是专门从事产品研发的嵌入式培训基地,随着近年来嵌入式行业的火爆,越来越多的人投入嵌入式大军中,粤嵌教育也为社会输送了大量的嵌入式人才。众所周知,嵌入式的门栏比较高,需要一定的C语言基础,现在粤嵌从多方面带你各个击破,一步一步进入嵌入式大门。C++技术固然是很时髦的,许多C用户都想在尽可能短的时间内为自己贴上C++的标签。介绍C++的书很多,但只有那些已经侥幸入门的用户才偶尔去翻翻,仍有不少在C++门口徘徊的流浪汉。

  本文只针对C用户,最好是一位很不错的老用户(譬如他在遇到最简单的问题时都尝试着使用指针),通过一些C和更好的C++(本文用的是Borland C++3.1版本)例程介绍有关C++的一些知识,让读者朋友们“浅入深出”,轻轻松松C to C++!

  一、标签!标签!

  快快为你的程序贴上C++的标签,让你看起来很像个合格的C++用户……

  1.注释(comment)

  C++的注释允许采取两种形式。第一种是传统C采用的/*和*/,另一种新采用的则是//,它表示从//至行尾皆为注释部分。读者朋友完全可以通过//使你的代码带上C++的气息,如test0l: //test01.cpp

  #include

  //I'm a C++user!

  //…and C is out of date.

  void main()

  {

  cout<<"Hello world!n"; //prints a string

  }

  Hello-world!

  如果你尝试着在test0l. exe中找到这些高级的注释,很简单,它们不会在那里的。

  2. cincout

  你可能从test0l中嗅出什么味儿来了,在C++中,其次的贵族是cout,而不是很老土的printf ( )。左移操作符‘<<’的含义被重写,称作“输出操作符”或“插入操作符”。你可以使用‘<<’将一大堆的数据像糖葫芦一样串起来,然后再用cout输出:

  cout << "ASCII code of "<< 'a' << " is:" <<97;

  ASCII code of a is:97

  如何来输出一个地址的值呢?在C中可以通过格式控制符”%p”来实现,如:

  printf ("%p,&i);

  类似地,C++也是这样:

  cout << & i;

  但对字符串就不同啦!因为:

  char * String="Waterloo Bridge";

  cout << String; //prints ‘Waterloo Bridge'

  只会输出String的内容。但方法还是有的,如采取强制类型转换:

  cout<<(void *)String;

  cin采取的操作符是’>>’,称作“输入操作符”或“提取操作符”。在头文件iostream.h中有cin cout的原型定义,cin语句的书写格式与cout的完全一样:

  cin>>i; //ok

  cin>>&i; //error. Illegal structure operation

  看到了?别再傻傻地送一个scanf()常用的’&’地址符给它。

  C++另外提供了一个操纵算子endl,它的功能和’n’完全一样,如test0l中的cout语句可改版为:

  cout << ”Hello world!”<

  3.即时声明

  这是笔者杜撰的一个术语,它的原文为declarations mixed with statements,意即允许变量的声明与语句的混合使用。传统C程序提倡用户将声明和语句分开,如下形式:

  int i=100;

  float f; //declarations

  i++;

  f=1.0/i; //statements 而C++抛弃这点可读性,允许用户采取更自由的书写形式:  int i=100;

  i++;

  float f =1. 0/i;

  即时声明常见于for循环语句中: for(int i = 0; i < 16; i++)

  for(int j = 0; j < 16; j++)

  putpixel(j i Color[i][j]);

  这种形式允许在语句段中任点声明新的变量并不失时机地使用它(而不必在所有的声明结束之后)。

  特别地,C++强化了数据类型的类概念,对于以上出现的“int i=1 j=2;”完全可以写成:int i(1) j (2);再如: char * Stringl("Youth Studio.”);

  char String2[]("Computer Fan.“);

  这不属于“即时声明”的范畴,但这些特性足以让你的代码与先前愚昧的C产品区别开来。

  4.作用域(scope)及其存取操作符(scope qualifier operator)

  即时声明使C语言的作用域的概念尤显重要,例如以下语句包含着一条错误,因为ch变量在if块外失去了作用域。  if(ok)

  char ch='!';

  else

  ch='?'; //error. access outside condition

  作用域对应于某一变量的生存周期,它通常表现为以下五种:

  块作用域

  开始于声明点,结束于块尾,块是由{}括起的一段区域

  函数作用域

  函数作用域只有语句标号,标号名可以和goto语句一起在函数体任何地方函数原型作用域

  在函数原型中的参量说明表中声明的标识符具有函数原型作用域

  文件作用域

  在所有块和类的外部声明的标识符(全局变量)具有文件作用域

  类作用域

  类的成员具有类作用域

  具有不同作用域的变量可以同名,如test02:

  //test02.cpp

  #include

  int i=0;

  void main()

  {

  cout << i << ' '; //global 'int i' visible

  {

  float i(0.01); //global 'int i' overrided

  cout<< i << ' ';

  }

  cout<

  }

  0 0.01 0

  编译器并未给出错误信息。

  作用域与可见性并不是同一概念,具有作用域不一定具有可见性,而具有可见性一定具有作用域。

  在test02中,float i的使用使全局int i失去可见性,这种情形被称作隐藏(override)。但这并不意味着int i失去了作用域,在main()函数运行过程中,int i始终存在。

  有一种办法来引用这丢了名份的全局i,即使用C++提供的作用域存取操作符::,它表示引用的变量具有文件作用域,如下例程:  //test03.cpp

  #include

  enum {boy girl};

  char i = boy;

  void main()

  {

  {

  float i(0.01);

  cout << "i=" << i << endl;

  ::i=girl; //modify global 'i'

  }

  cout << "I am a " << (i ? "girl." : "boy.");

  }

  i=0.01

  I am a girl.  在上例中,通过::操作符,第8行语句偷偷地改写了i所属的性别。更妙的是,::之前还可以加上某些类的名称,它表示引用的变量是该类的成员。

粤嵌教你从C轻松到C++(一)相关推荐

  1. 粤嵌教你从C轻松到C++(二)

    摘要:粤嵌教育是专门从事产品研发的嵌入式培训基地,随着近年来嵌入式行业的火爆,越来越多的人投入嵌入式大军中,粤嵌教育也为社会输送了大量的嵌入式人才.众所周知,嵌入式的门栏比较高,需要一定的C语言基础, ...

  2. 怎样才可以通过Java培训拿到高薪?-粤嵌教育

    1.明确学习目标 参加Java培训的目标可以是找一份相关的工作,亦或者是帮助自己目前工作进行提升,拿到更高的薪资. Java培训后月薪过万是非常普遍的事,2-3年工作经验拿到月薪1万5在一线城市也很正 ...

  3. 天道酬勤,妹子在粤嵌找到自己的目标

    作为即将毕业步入社会的计算机专业学子,不知道外边的世界到底会怎么样,对未来的生活充满了好奇,充满了向往,同时也充斥着迷惘与不安.未出校门之前,我想象中找到工作不是难事,可是开始投简历之后,跟我想的完全 ...

  4. python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门

    Python的设计具有很强的可读性,相比其他语言经常使用英文关键字和一些标点符号,Python具有比其他语言更有特色的语法结构.随着大数据,人工智能时代的来临,Python已经成为有发展潜质的机器语. ...

  5. 安卓手机突然很卡_你的安卓手机越来越卡?教你4招轻松解决问题!

    原标题:你的安卓手机越来越卡?教你4招轻松解决问题! 现在我们对于手机的使用时间不会特别的长,所以这个更换的速度就比较快.其实是很多的用户换手机是因为比较喜欢用新的手机体验新的科技,不过也还是有很多的 ...

  6. sd卡测速工具_怎样恢复SD卡数据?教你两招轻松恢复

    怎样恢复SD卡数据?教你两招轻松恢复 SD卡数据恢复软件里真正免费的而且具备比较高的恢复能力的软件其实不多,而嗨格式数据恢复大师就是其中之一,SD 内存卡是一种性价比相对较高的存储设备,在目前的生活中 ...

  7. C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训

    C语言实现电子音乐相册---粤嵌GEC6818嵌入式系统实训 功能演示: 版本介绍 滑动式 点击放大式 完整版 至尊版 获取方式 功能演示: 演示视频: 滑动式 点击放大式 版本介绍 分为滑动式.点击 ...

  8. 模块化思想——粤嵌GEC6818读取图片宽度、高度、色深

    推荐阅读:C语言实现2048小游戏-粤嵌GEC6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 模块化思想 交叉编译两个c文件的方法: 模块化思想: ... 只有一个唯 ...

  9. 粤嵌GE6818实现识别触摸坐标的识别

    推荐阅读:C语言实现2048小游戏-粤嵌GE6818嵌入式系统实训 C语言实现电子音乐相册-粤嵌GEC6818嵌入式系统实训 代码 // main.c #include "bmp.h&quo ...

最新文章

  1. python使用matplotlib可视化堆叠的直方图(stacked histogram plot)、多个类别的数据在直方图区间层面累积堆叠起来
  2. php 字符串去html,PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
  3. Telnet 对memcached进行数据操作
  4. BF算法和KMP算法实现
  5. .net获取地址栏中的url
  6. 使用XML管理模版資源
  7. jquery实现单击div切换背景,再次单击回到原来样式
  8. python安装报错类型_Python处理验证码第一篇(pytesser初探及报错处理)
  9. C3P0连接池详细配置
  10. .net framework开发winform_.NET架构开发应知应会
  11. URL.createObjectURL图片预览
  12. VC运行库修复安装一键安装
  13. 【C语言】通讯录制作
  14. Hadoop常用端口号汇总
  15. 内置单片机的433无线模块高速连传典型运用
  16. Java面试相关问题以及解析
  17. 每日170219-20
  18. redis从入门到入魔
  19. D3D11 加载静态3D模型(.obj格式)
  20. Merkle Tree(默克尔树)原理解析

热门文章

  1. QQ聊天与计算机系统结构,类QQ的聊天系统浅析
  2. 3DAI智能皮肤检测仪--拥抱新美业的科技变革
  3. 【现货】AP6317 同步3A锂电充电芯片 带短温度保护
  4. 青龙扩展项目---电视家
  5. 如何判断IP地址是A类B类还是C类?
  6. 计算机光盘放不了是怎么回事,光盘放入光驱没有反应怎么回事?如何解决?
  7. python数值类型不包含复数_[python学习手册-笔记]003.数值类型
  8. python实现关联算法_关联规则算法Apriori学习及Python实现
  9. qmake *.prf文件 自定义features
  10. redis极简记录---配置文件学习