关于指针的一个问题
我现在有点这样一个疑问,如下:
int a[10],*p; int a[10],*p;
p=a; p=a;
... ...
for(i=0;i <10;i++) for(p=a;p <a+10;p++)
printf( "%d ",*(a+i)); printf( "%d ",*p);
我分析的结论是用p++效率要高些,但我们老师说一般不用p++,说什么以后循环次数多了容易出错,造成数据丢失之类的.
我想问的是,p++的确有时不方便把握,但以后的复杂的程序中真不提倡用p++吗?
是不是以现在的计算机的运行速度,不需要我们太考虑这样的效率问题呢?
[解决办法]
p++ 非常要不得的 呵呵
以前经常弄错
比如你p是new出来的数组
你给++了
到后来再delete p就不好办了
只能再申明一个指针, 在让p++之前先把p的指针状态保存住才能修改指针p
[解决办法]
不会的,照用,只是要仔细一点就行了。
for(i=0;i <10;i++)
printf( "%d ",*(a+i));
这样的同样容易出错,i的值控制的不好一样容易越界。
int a[10],*p;
for(p=a;p <a+10;p++)
这样写的话,你可以用一个指针a_end赋值为a+10,然后写成
for(p=a;p!=a_end;p++)
这样就不用去记那个10了,这是c++标准库推荐的写法
[解决办法]
那个xindekaishi() ~你的程序本身就有问题哈~;
for(p=arr;p <p+200000;p++)中p <p+200000这个条件本身就是不该出现的错误;
必然引起异常的啦~~因为p永远是 <p+200000的;
指针很神奇的,用得好的话很方便的啦~~