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:

[cpp] view plaincopy
  1. //《C++ primary plus》第四章编程练习题1  
  2. #include <iostream>  
  3. #include <string>  
  4. using namespace std;  
  5. string fname;  
  6. string lname;  
  7. char grade;  
  8. int age;  
  9. int main()  
  10. {  
  11.    cout<<"What is your first name?";  
  12.    getline(cin,fname);  
  13.    cout<<"What is your last name?";  
  14.    getline(cin,lname);  
  15.    cout<<"What letter grade do you deserve?";  
  16.    cin>>grade;  
  17.    cout<<"What is your age?";  
  18.    cin>>age;  
  19.    cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:"   <<grade<<endl<<"Age:"<<age<<endl;  
  20.    system("pause");  
  21.    return(0);  
  22. }  

 *cin.getline(char ch[],size)是cin 的一个成员函数,定义在<iostream>中,用于输入行指定size的字符串,以enter结束。若输入长度超出size,则不再接受后续的输入。

 

example 2:

[cpp] view plaincopy
  1. //《C++ primary plus》第四章编程练习题1  
  2. #include <iostream>  
  3. using namespace std;  
  4. char fname[5];  
  5. char lname[5];  
  6. char grade;  
  7. int age;  
  8. int main()  
  9. {  
  10.     cout<<"What is your first name?";  
  11.     cin.getline(fname,5);  
  12.     cout<<"What is your last name?";  
  13.     cin.getline(lname,5);  
  14.     cout<<"What letter grade do you deserve?";  
  15.     cin>>grade;  
  16.     cout<<"What is your age?";  
  17.     cin>>age;  
  18.     cout<<"Name:"<<lname<<","<<fname<<endl<<"Grade:"<<grade<<endl<<"Age:"<<age<<endl;  
  19.     system("pause");  
  20.     return(0);  
  21. }  

(引自: 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 










0 0
原创粉丝点击