读《数据结构学习指导和习题解答》(C++语言版)有感。

来源:互联网 发布:雷达图制作软件 编辑:程序博客网 时间:2024/05/02 02:29

第一章

1、作用域解析运算符 ::用来指示这些定义的位置。

2、条件表达式运算符

         ( condition ? value1 : value2 )

如果condition 为真,则它的值为value1,否则为value2。

Ps在C语言中我们知道a >b  ? a : b三目运算符,跟他一样,今天才知道a>b是个条件语句,后面的值是根据前面的真假来得出的,以前以为是真的比较ab的大小呢。

3、C++中的运算符优先级一览表

1

::

2

.、->、[]、()、++(后增量)、--(后减量)、typeid、

dynamic_const、static_cast、reinterpret_cast、const_cast

3

~、!、+、-(一元)、++(前增量)、--(前减量)、new、

delete、&(引用)、*(解引用)、sizeof

4

.*、->*

5

*(乘)、/、%

6

+、-(二元)

7

<<、>>

8

<、>、<=、>=

9

==、!=

10

&(位“与”)

11

^(位“异或”)

12

|(位“或”)

13

&&

14

||

15

=、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=

16

?:

17

throw

18

,

PS:自我感觉这个很有用,当初学习C语言的时候都没学好,现在在C++中再次遇到他,还是要复习。

4、length()和substr()函数的作用

例如:

         strings=”ABCDEFGH”;

         s.length()=8;

         s.substr(2,4)=”CDEF”

5、PSC++中string字符串很强大,直接可以用比较运算符比较两个字符串的大小,根据的是26字母的前后位置而定,还有,字符串还可以直接进行“+”,很强大哦。

6、查找子串

例如:

         const string  str=”Mississippi”;

         const  string substr=”issi”;

str.find(substr)= 1

str.find(substr,2)=4

str.find(substr,8)=4294967295

                            UINI_MAX = 4294967295

调用第一个返回子串substr 在str 中的第1个起始位置。

调用第二个返回子串substr 在str 中的前2个字符串之后的第一个起始位置。

调用第二个返回一个较大的整数(UINI_MAX),指示在前8个字符之后未找到子串。

注意:unsigned int 常量 UINI_MAX定义在<limits>头文件中,必须在程序中包含它。

7、文件

#include<iostream>

using namespace std;

#include<ctype.h>

#include<fstream>

int main()

{

         ifstreaminfile("input.txt");

         ofstreamoutfile("output.txt");

         stringline;

         while(getline(infile,line))

         {

                   for(inti=0;i<line.length();i++)

                            if(i==0||line[i-1]==''&&isalpha(line[i]))

                                     line[i]=toupper(line[i]);

                   outfile<<line<<endl;

         }

}

PS感觉这个函数写的比较好,以后写项目可以做一个模板啦。

2015年3月26日19:48:34

第二章

1、符号&被称为引用运算符。在把它用作变量或对象的名称x的前缀时,得到的表达式&x将求值为x的内存地址。因此,&也称为运算符“的地址”。

2、符号*被称为解引用运算符。当把它用作指针的名称p的前缀时,得到的表达式*p将求值为p指向的变量或对象的值。

3、PSC++中的string类,真的很厉害,今天又看到这样的方法对string对象的赋值方法:

         stringname(“Erika”);这不就是在对一个对象的赋值吗。通过类的构造函数函数赋值,并且这个构造函数还是一个形参的构造函数。

4、尝试解引用空指针

#include<iostream>

using namespace std;

int main()

{

         string*p;

         if(1)

         {

                   stringname("Erika");

                   p=&name;

                   cout<<"Nowp points to :"<<*p<<endl;

         }

         cout<<"Nowp points to :"<<*p<<endl;

         return0;

}

PS如代码,我们看到了一段代码,我的第一反应是两个输出语句都是输出Erika啊,可是只有第一个正确输出了,第二个没有输出,原来是作用域不同。这让我联想起来了C语言中的变量的作用域了,这里也可以那样解释,只不过是变量变成了类的对象。

0 0