C++系统总结(一)

来源:互联网 发布:win8安装linux双系统 编辑:程序博客网 时间:2024/05/22 15:49
1.数组被称为符合类型,是因为它是基于其他类型来构建的,数组中指定元素个数的值必须编译时能确定的值,比如整形常数,const值,常量表达式
2.程序员必须保证数组使用有效的下标值,因为编译器不会去检查下标是否有效
3.C++翻译器不是真正的编译器,它是将C++翻译成C再用C编译器进行编译,它只是一种转换器
4.int a[10] = {0}将所有的值都初始化为0,  int a[10] = {1}将a[0]初始化为1,其他为0

 

5.C-style string:以空字符'/0'结尾的字符串

  char[10] = "i love you".此处字符串常量(字符串字面值)隐式的包含空字符,不必手动添加,所以"S"包含两个字符,而"S"实际表示的是这个字符串常量的地址,所以char a = "S"错得离谱

 

6.sizeof操作符计算整个数组的长度,将'/0'也包含在内,而strlen()函数不包含'/0',也就是说它只计算可见字符

 

7.cin使用空白符来定界
  char a[10];
  cin >> a;

  则当键入abc de时,数组a中实际存储的是"abc","de"留在输入缓冲区中,这种特性可能迫使我们可能需要使用getline(),即面向行的输入
  char a[10]
  cin >> cin.getline(a,10),它通过换行符来确定行尾且不保存换行符,也就是说,它用空字符来替换换行符
  char a[10]
  cin.get(a,10)也是面向行当输入,但是它不丢弃换行符,而是将其留在输入队列中,所以我们可能需要cin.get()来读取换行符,这个调用时功能是读取下一个字符。我们可以这样写cin.get(a,10).get()

 

 

8.当输入的字符比分配的长度更长,则余下的字符会留在输入队列中
  getline使得操作更加简便,get使得检查错误更加容易

 

 

9.混合输入字符串和数字可能会出现问题,比如下列程序片段
   int a;
   char b[10];
   cin >> a;

  正确的写法应该是

  int a;
  char b[10];
  cin >> a;
  cin.get();
  cin.getline(b,10)

  cin.getline(b,10)会将输入a时留在输入队列中的换行符经过替换成空字符后输入到b中

 

 

10.string提供了将字符串作为一种数据类型的表示方法,string类包含在名称空间std中;
   char数组是一组用来存储字符串的存储单元,string类变量是一个表示字符串的实体;
   不能将C库中的C字符串函数用于string对象;
   当需要读取一行而不是一个单词时,需要做如下处理:
   getline(cin,str),这里的getline不是istream类中的一个方法,istream类中没有处理string的方法
   所以需要特别注意下列程序片段的注释的区别
     int a;
     string b;
     cin >> a;    //这里使用的是istream类中的一个方法
     cin >> b;    //这里使用的是string类的一个友员函数

 

11.在C++中,允许在声明结构变量时去掉关键词struct,这种与C中做法的不同强调了在C++中,结构声明定义了一种新的数据类型

 

12.有些编译器(如VC,BC)不支持将string类作为结构成员

 

13.在结构体中使用位字段,可以创建与某个硬件设备上的寄存器对应的数据结构。位字段一般用在低级编程中








 

原创粉丝点击