(原)关于指针的一些个人想法

来源:互联网 发布:东村明子 知乎 编辑:程序博客网 时间:2024/04/30 17:31

  指针是C++的一种复合类型,是用于存储地址的一种容器。例如 int a=1;  int* p=&a;  &p是一个用于存储a的地址的地址,这时p就是一个指向a的地址的地址(即等同于a的地址),而*p就相当于a的值!任何时候使用指针都需要记得的两点是,给指针赋值,无论是一级指针还是多级指针,值必须是一个地址!另一点是必须记得先赋值后使用!

  C++的强大的其中很重要的一点就是因为指针,指针可以动态操作内存,使用new操作符动态申请地址,使用new时要注意的就是使用完成后要记得释放内存不然有可能会造成内存泄露!有一点要提醒一下的是:释放指针时释放的内存,并不会影响指针变量例如 int* p=new int; delete p;p=new int;即p可以重复使用.

  当我们使用指针和数组时,有个疑问是为什么可以直接把指针当数组用呢!如int a[3]={1,2,3}; int* p=a; cout<<p[0];原因是在C++中无论是以指针还是数组形式操作数组时都必须经过相同的转换,转换为这种形式(*p ,*(p+1),*(p+2))(*a ,*(a+1),*(a+2))


  关于为什么使用二级指针时,不用将非const的指针转换为const的指针呢?例如:const int** p2; int* p1; pp2=&p1; 这个时候*pp2与p1指向了相同的值*p2,另一个说法是*pp2与p1指向**p2。这个时候p1就可以修改const类型的*p2了

0 0