C++ primer plus学习记录
来源:互联网 发布:张萱妍用的软件 编辑:程序博客网 时间:2024/06/05 01:58
主要用作个人笔记 & 学习进度管理 。 //希望能兼顾速度与深度.....
【第一章 & 第二章】 Oct 07
* 主要用作复习和查缺补漏, 以及丰富关于C/C++语言的背景知识。
1. return语句前使用 cin.get( ) 可以在运行后保持界面。
2.包含stido.h 文件后,C++也可以使用C的printf、scanf。
3. int main( )称为函数头。函数头描述了函数与调用它的函数之间的接口 (其实我一直对接口的概念不太理解...)
4. return 0 只适用于main函数。
5. 可以考虑使用using cout / cin / endl ::std。
6. cout << "abcdef" << var << "ghi" << endl; (将输出变量与string合并,效果相当于java的“a”+b+“c”,或是PHP的“a”.b.“c” )
7. 善用手册和在线文档来确定使用哪个头文件。
8. void函数没有返回值,因此不能用于赋值语句。 例: a = show (3) ----错误; 应直接使用show(3)。 此处假定show(int a) 为void。
9. 名称空间放在函数内,表示只有该函数可以访问其元素。
【第三章】
1. 字节是单位为8的内存单元。 //有空背一下各类型的存储长度. P40 范例可以参考。 // sizeof( ) 可以求出需要占用的字节数。对类型名要加括号,对变量不一定。
2. 头文件climits定义符号常量,参考P41.
3. 无符号类型可以扩大一倍存储量。short (-32767,32767),unsigned short(0,65535)。 注意必须保证所需求的数值不为负。
4. 数值溢出会导致另一端重置,以及其他不可预料的结果。
5. cout << hex; 可以使输出转换为16进制(输入不受影响)。 注意hex属于std,因此若使用了该空间便不能以它为变量,除非cout使用std::cout形式。
6. 关于转义 P50-51。 (试了下,感觉以后可以在一些编程的小细节处使用)
7. char变量也可以使用无符号类型,表示范围由-127~127变为0~255。
8. 两个int相除,所得结果只保留整数,小数部分舍弃。(17/5=3,9/5=1) 若其中有至少一个数为浮点,则结果也为浮点(浮点默认为double)。
9. 不同类型的数值转换容易为出现问题。 P63-65. 65有强制类型转换的说明。 static_cast<type> (value) .
10. auto 可以根据初始赋值来自动确定变量类型。 auto a = 1.5 // float
//------------------------------------------------------------------------------------------------------------
【第四章】 Oct 12
1. 使用数组时,要确保程序只使用有效的index。
2. sizeof可以用来计算数组整体字节数(sizeof arrayA),也可以单独指明数组中的某个元素。
3. char string_constant[ ] = "abcdef"; 会自动加上空字符(*读入到char数组中时)。 //字符串常量 //拼接直接用引号分开,可以换行、空白、制表
4. 善用cin.getline(array_name, length). 直接调用函数即可。 例:P79 //它会将回车视为换行符,但不保存。
getline()是定义在<string>中的一个行数,用于输入一行string,以enter结束。
函数原型:getline(cin,str);
cin:istream类的输入流对象
str:待输入的string对象
//getline实质上是istream类的一个方法,而cin则是该类的一个对象。
example 1:
- //《C++ primary plus》第四章编程练习题1
- #include <iostream>
- #include <string>
- using namespace std;
- string fname;
- string lname;
- char grade;
- int age;
- int main()
- {
- cout<<"What is your first name?";
- getline(cin,fname);
- cout<<"What is your last name?";
- getline(cin,lname);
- cout<<"What letter grade do you deserve?";
- cin>>grade;
- cout<<"What is your age?";
- cin>>age;
- cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:" <<grade<<endl<<"Age:"<<age<<endl;
- system("pause");
- return(0);
- }
*cin.getline(char ch[],size)是cin 的一个成员函数,定义在<iostream>中,用于输入行指定size的字符串,以enter结束。若输入长度超出size,则不再接受后续的输入。
example 2:
- //《C++ primary plus》第四章编程练习题1
- #include <iostream>
- using namespace std;
- char fname[5];
- char lname[5];
- char grade;
- int age;
- int main()
- {
- cout<<"What is your first name?";
- cin.getline(fname,5);
- cout<<"What is your last name?";
- cin.getline(lname,5);
- cout<<"What letter grade do you deserve?";
- cin>>grade;
- cout<<"What is your age?";
- cin>>age;
- cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:"<<grade<<endl<<"Age:"<<age<<endl;
- system("pause");
- return(0);
- }
(引自: http://blog.csdn.net/steven30832/article/details/6003006 )
4. (接)拼接写法:cin.getline(array1, arrSize).getline(array2,arrSize); //get( ) 用法不太明白,特别是不读取、丢弃换行符这一点上。
5. 为了防止getline错认换行符,可以这样:cin>>num; cin.get() 或 (cin >> num).get( ); // (cin>>num).get(ch);
6. 和java不同,C++要使用string必须包含头文件、或者std::string。 string实质上是一个类。 拼接方式同样用 + 。 输入方法可以用getline(cin, str);
7. string确定长度使用size()。 int len = str1.size( ); 字符串用strlen。 int len2 = strlen(charr1);
8. 创建结构使用struct。 (其实我感觉作用有点像PHP的数组)
struct example{ char name[10]; float salary; std::string job;}
随后就可以创建结构对象,例: example member1;//struct关键字可以省略
作为对象,member1可以访问struct内的成员。member1.salary。 使用example member1 = {"name", 5000.00, "assistant" }; //格式可以另外排 // =可选
同类结构赋值可以直接把新变量放在赋值语句后。 P92
创建结构数组:example arrayExample[10]; 该数组包含10个结构。 arrayExample[1]. float = 2.33;。 P93
9. 共同体(union)声明方法跟struct一样,但只能使用其中一种类型。 在数据使用多种格式存储、但不会同时使用时,union可以节约内存,多用于系统编程、操作系统数据结构和硬件数据结构。
10. 枚举(enum)定义方式: enum example2 {1, 2 ,3,4}; 声明为 example2 enumEx; 若不强制转换,enumEx可能的值只有1-4四个。且不能进行算数运算。
定义方式也可以用enum bits{one= 1, two = 2, three = 3, four = 4}; //枚举的细节还不太懂P96-97
//----------------------------------------------------------------------------------
指针
1. 指针作为变量,存储值的地址,而不是值本身。 // &用来寻找地址。 int test = 1; cout << &test; 会显示test的内存地址。
声明与赋值
int num = 5;int * p_num;p_num = #std::cout<<p_num; //Addressstd::cout<<*p_num; //number 5
- C Primer Plus学习
- C++ primer plus学习记录
- C++Primer Plus学习笔记
- 《C Primer Plus》学习笔记
- 《C Primer Plus》学习笔记
- C Primer Plus 学习笔记
- C Primer Plus学习 一
- C Primer Plus学习 二
- C Primer Plus学习 三
- C Primer Plus学习 四
- C Primer Plus第五版记录
- 《C++.Primer.Plus》学习笔记(一)
- 《C++.Primer.Plus》学习笔记(二)
- (c primer plus第五版) 学习笔记
- c.primer.plus 学习笔记-- 1.概览
- 《C++Primer Plus》学习笔记(一)
- 《C++Primer Plus》学习笔记(二)
- 《C++Primer Plus》学习笔记(三)
- hybris学习笔记:Trail ~ Goal
- LeetCode刷题笔录Remove Duplicates from Sorted List II
- gbd/lldb使用2
- carr123 是神马?傻B一个
- HDU 1241 Oil Deposits[dfs || bfs]
- C++ primer plus学习记录
- USACO Window Area 解题报告
- 一篇写的不错的java ClassLoader工作机制的文章
- Java内存溢出的详细解决方案
- CentOS7配置Samba服务
- 性能测试-LR篇
- 最小路径覆盖问题poj2594&&poj1422(匈牙利解法)
- 计算机的组装
- Linux网络子系统