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

  指针是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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值