c++笔记(1):常量指针和指针常量

来源:互联网 发布:在线音乐识别软件 编辑:程序博客网 时间:2024/05/22 07:08

1.

普通指针可以这样赋值:

int  *p;
p = new  int;

*p = 200;

#include<iostream>  using namespace std;  int main()  {      int a=100;       int  *p;        *p=a;//错误,不要求指针变量一定要初始化,但一定要先对指针变量有效赋值,再用指针变量间接访问    cout<<*p<<endl;      return 0;  }  
*p的意思是“以p的内容为地址的变量”,*p是一个局部变量,里边是一个垃圾值,是以p里边的地址为单元的变量,是一个未知的,但是,我们总共分配了两个空间,一个是p的空间,一个是a的空间,在程序运行中,程序将100这个值去修改了一个不属于它(分配)的空间,所以会出错,这个一般编译链接时都不会报错,但调试时会出错。


2.

十进制:Dec   

八进制:Oct (必须以数字 0 为前缀)

十六进制:Hex (以 0x 或 0X 为前缀)

枚举类型:enum

#include <iostream>using namespace std;enum colour{ red, yellow, blue, white, black };//类型标识符color,枚举常量{。。。},枚举类型变量cint main(){ colour c;  c=red;  cout<<"red: "<<c<<endl;  c=blue;  cout<<"blue: "<<c<<endl;  c=black;  cout<<"black: "<<c<<endl;}
3.

转义字符示例

#include<iostream>using namespace std ;int main (){ cout<<"operating\tsystem\n" ;//'\t'横向制表符,\n换行符   cout<<'\101' << '\t' << 'A' <<"\b\b"<<'B'<<'\012';//'\b'退格符,'\012'换行}

4.

指向常量的指针不能修改所指常量。

指向常量的指针可以修改为指向变量,但是不能用间址方式修改变量(普通指针可以)

#include<iostream>using namespace std;int main(){const int a=100;int b=100;        int const *p=&a;  //*p = b;错误,指向常量的指针不能用间址方式修改变量p=&b;//正确,可以修改为指向变量cout<<*p<<endl;return 0;}

指针常量的值只能在定义的时候初始化,之后不能修改。

#include<iostream>using namespace std ;int  main (){  int  max ;    int  * const  pmax = & max ,  * p ;    * pmax = 1000 ;    cout << "max1 = " << * pmax << endl ;    p = new  int ;    * p = 2000 ;    cout << " * p = " << * p << endl ;    // pmax = p ; // 错误    p = pmax ;    cout <<" * p2 = " << * p << endl ;    * pmax = * pmax + * p ;    cout << " max2 = " << * pmax << endl ;}

5.

虽然所有的指针变量占用的内存大小相同,但指针的类型和指向的数据的类型仍要一致,因为不同类型的指针,在作+-运算时,它的步长是不一样的。

6.

对于指向常量的指针常量(const  类型  * const  指针),指针本身和所指对象的值在定义之后都限制为只读。

#include<iostream>using namespace std ;int  main (){  const  int MIN = 10 ;    int  max ;    const  int  * const  pmax = & max ;    // * pmax = 1000 ;错误,间址访问为只读    max = 1000 ;    cout << " max = " << * pmax << endl ;    const  int  * const  pmin = & MIN ;    // pmin = & max ;错误,不能修改指针常量    // * pmin = 0 ;错误,间址访问为只读    cout << " MIN = " << * pmin << endl ;}

7.

常引用:const  类型  & 引用名  = 对象名 ;

不能通过常引用对对象进行写操作。

int a=314;const int & ra=a;//ra是a的常引用//ra=618;//错误,不能通过常引用对对象a执行写操作a=618;//正确
8.

x = ++ i 相当于i = i + 1,x = i;x = i ++ 相当于x = i,i = i + 1。

9.

强制类型转换

( 类型 ) ( 表达式 )
  类型   ( 表达式 )
( 类型 )   表达式

10.

实数比较宜采用求误差值形式:如fabs ( x - y ) < 1e-5

11.

E1 ? E2 :E3

若 E1 的值为true(非0),条件表达式的值为 E2 的值;
若 E1 的值为false(0),条件表达式的值为 E3 的值。

12.

逗号表达式:E1 , E2 , E3 …… ,En

顺序执行 E1、E2、E3 …… En,最后获得逗号表达式的值。

13.

三本编程求职书:

1.Cracking the Coding Interview

2.Programming Interview Exposed

3.Elements of Programming Interviews: The Insiders' Guide

0 0
原创粉丝点击