C++ Primer 学习笔记一

A       .基本类型要点:

1.  结构体:c++在处理结构体时,是按照一般的变量进行处理的。结构体可以作为函数参数和返回值。作为函数参数时,也分传值和传引用的区别,而作为返回值时,返回的是结构体的一个拷贝。可以将一个结构赋给另外一个结构。

2.  枚举:   枚举量是整型,可以被提升为Int类型,但是int不能自动转换为枚举类型; 还有没有为枚举定义操作符+; 如果Int值是有效的,可以通过强制类型转换,把它赋给枚举变量; 显示设置枚举值时,指定的值必须是整数; 枚举的取值范围为大于最大值得、最小的2的幂-1。例如enum bigstep{one=1,two=2,third=100}; 则bigstep的取值范围为0~127。

3.  int *p1,p2;将创建一个指针和一个常规的int变量。

4.  c++在创建指针时,计算机将分配用来存储地址的内存,但不会分配用来存储指针所指向的数据的内存。

5.  如果要将数字值作为地址来使用,应通过强制类型转换将数字转换为适当的地址类型。

6.  c++中,值为0的指针为空指针。确保空指针不会指向有效的数据。

7.  不要尝试释放已经释放的内存块,但是对空指针使用delete是安全的。所以尽量不要创建2个指向同一个内存块的指针。

8.  不能使用sizeof操作符来确定动态分配的数组包含的字节数!!!、

9.  数组和指针的区别:1.数组名是指针,可以对指针进行+(-)操作,但是数组名不可以;  2.对数组应用sizeof得到的是数组的长度,而对指针应用得到的是指针的长度。

10.  如果给cout提供一个指针,它将打印地址。但如果指针的类型为char *,则cout将显示指向的字符串。如果要显示字符串的地址,则必须将这种指针强制转换为另外一种指针类型,如Int *。

B       .循环和关系表达式:

1.  递增和递减操作符在同一个值中使用多次时,因为每个编译器很可能对于“使用后修改”和“修改后使用”的规则可能不同,因此可能导致在不同的编译器下得到不同的结果。

2.  c++规定,在使用递增或者递减时,确定一个完整表达式(它是这样一个表达式,不是另一个更大表达式的子表达式),每个完整表达式完了,在下一个开始之前,都要评估一次。例如:while(guest++<10) printf("%d",guest); 其中的guest++<10是一个完整表达式,一次在第一次printf的之前,要评估一次,这样打出来的guest已经加一; 再如,y=(4+x++)+(6+x++);,显然整个句子才是一个完整表达式,c++只保证在执行下一条语句之前,x+2,但是没有规定是在计算每个子表示式之后将x递增还是在整个表达式计算完毕之后才将x的值递增!这个时候跟编译器有关,所以尽量避免使用这样的句子。

3.  *和++同时作用于指针时,取决于优先级。前缀指针和*的优先级同,从右到左结合。后缀比*(还有前缀)优先级高。

4.  c++为类型建立别名的方式有两种:1.预处理器 #define BYTE char  2.使用typedef  typedef char BYTE;  最好使用typedef.

C       .分支语句和逻辑操作符:

  • switch(integer-expression){} 中的判断表达式必须为一个结果为整数的表达式。因此switch不能处理浮点测试。都是整数时,如果选项超过2个,switch的效率比if else高。

D       .函数

1.  在c++中,void test();与void test(void)是等效的,意味着函数没有参数。argument--实参 parameter--形参

2.  在c++中,当且仅当用于函数参数时,int *arr和int arr[]的含义是相同的,它们都意味着arr是一个int指针。

3.  int age=39;   const int *p=&age; 后边的声明表示p指向一个const int(这里为39),因此不能使用pt来修改这个值。即*p=31;这个语句是不合法的。我们能通过修改age=23;来改变age的值,但是这个时候*p仍然为39!!也就是const int *p一旦指定一个值后,*p的内容将不改变,即不能通过*p改变值。

4.  将const的地址赋给常规指针是不可行的。后边再详细讨论下const+指针的情况。

5.  获取函数的地址很简单:只要使用函数名即可,不跟参数。声明函数指针时应该指定函数的返回类型及函数的参数列表。例如一个函数的原型为 double pam(int); 则其对应的函数指针的声明为:double (*pPam)(int); pPam就是函数pam的函数指针。则我们现在可以赋值 pf=pPam; 然后就可以使用这个函数指针来调用函数了。例如:double r=(*pPam)(5);或者double r=pPam(5);

posted on 2008-03-11 13:52 弱水一瓢 阅读(206) 评论(0)  编辑 收藏 引用 所属分类: C++ Primer


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

文章分类

最新评论