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.在结构体中使用位字段,可以创建与某个硬件设备上的寄存器对应的数据结构。位字段一般用在低级编程中
- Linux系统C语言读写文件总结 (一)
- C++系统总结(一)
- 餐饮系统总结(一)
- c程序设计总结(一)
- C语言总结(一)
- C/C++总结(一)
- C总结复习(一)
- C语言总结(一)
- c语言总结(一)
- unix 系统调用总结(一)
- LoadRunner测试 系统体会总结(一)
- 系统移植学习总结(一)
- l教务系统总结一( 思想)
- 新闻发布系统总结(一)
- 学生信息管理系统总结(一)
- 机房收费系统(一)整体总结
- Ogre材质系统总结(一)
- 学生信息管理系统问题总结(一)
- 实验代码
- 利用u-boot 的工具mkimage 把zImage转换为uImage的方法
- windows下android环境配置(64位)
- JavaScript文件中文乱码问题
- 用nethogs监控上网流量
- C++系统总结(一)
- Directx11 HelloWorld之_一个简洁漂亮的框架
- 两个窗体(form)间传递参数
- RAC常用操作
- myEclipse Debug 快捷键
- ASM维护
- 监控上网流量
- i++和++i(续)
- 28个不得不看的经典编程算法!!