打印

关于指针

[复制链接]
1199|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-6-8 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C++中指针是天使更是魔鬼,特别对于初学者来说,它浪费了无数程序员无数的时间,前赴后继。
使用指针很容易出错,常见的问题有内存越界,野指针等等。而且出错后问题很难查,有时候程序出错后,不会马上崩溃,而是过了很久;程序崩溃的地方通常也不是代码出错的地方;或者程序运行很久后偶尔出现一次bug;等等。
可惜的是,C++的教科书上一般不会强调指针的危害,导致了很多程序员使用指针泛滥,而当你工作久了之后就会切身的体会到问题的严重性,这通常是由于无数次的彻夜调试。
指针使用方便,但是它带来的问题和它带来的好处一样多。再有经验再细心的程序员,也无法保证使用指针完全没有bug,使用指针常常意味着整天担心程序会出错。
我们可以不使用指针,指针有很多的替代品,相比指针非常安全,比如智能指针(不会有野指针的问题),vector(数组越界的问题就少多了),string等等,只有在不得不用指针的时候才使用。
这就是我对C++指针的一点点批判。

相关帖子

沙发
txcy| | 2012-6-8 16:27 | 只看该作者
对于有经验的程序员,这不是问题呀。本来,程序员就应该对自己的代码负责。

使用特权

评论回复
板凳
gxgclg| | 2012-6-8 16:44 | 只看该作者
1 避免野指针的产生,野指针产生的情况
  a)定义指针未初始化 int* p;
  b) 指针p被free或者delete后没有置NULL
2 使用指针要注意分配空间,不要犯如下错误。
 char* p=NULL;
  strcpy(p,"abc");
3 返回局部变量的指针或者引用,函数内定义的局部变量在调用结束后会释放,返回这个局部变量的指针或者引用也是错误的.如下
 int* f() {
  int temp=1;
  return &temp;
}

以上是我的经验,分享一下。

使用特权

评论回复
地板
秋天落叶| | 2012-6-8 16:46 | 只看该作者
不用指针,用string和vector?
使用的不好的vector效率比数组低的多,别跟我说你用的很好,你希望同事都用string和vector,难道你还要先给他们培训应该怎样用vector?
还有如果你连指针都用不好,还是别用c或c++了,换java把

使用特权

评论回复
5
火箭球迷| | 2012-6-10 12:17 | 只看该作者
高手都是很擅长利用好指针的

使用特权

评论回复
6
dfsa| | 2012-6-10 12:23 | 只看该作者
指针用不好的确很容易出问题

使用特权

评论回复
7
无冕之王| | 2012-6-10 12:38 | 只看该作者
不想用指针,就学JAVA吧

使用特权

评论回复
8
xsgy123| | 2012-6-11 20:45 | 只看该作者
似乎很多人都对指针有偏见,但学习嵌入式还必须用好指针

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝