操作指针数组

char *a[2] = {"abcdefg","iiii"};
char *b[3];
strcpy(b[1], a[1]);
这样编译没错误,运行就会提示错误。
  因为b中元素仅仅是指针而已,只为存放指针名而分配了空间!就是说,当你进行这样的复制操作时,b中并不具有储存一个字符数组的空间。

  为了解决这样的问题,一个可以考虑的方法是,可以选择使用自由存储区中的空间,比如像这样在

for(int i=0;i<3;i++)b[i] = new char[10];
但是注意,这时b中的元素是存储在自由存储区中的,就是说需要你自己管理它们,当用完以后记得挨个删除,如
for(int i=0;i<3;i++)delete[] b[i];

posted on 2013-05-10 09:00  flash610  阅读(159)  评论(0编辑  收藏  举报