注册 登录
编程论坛 C++教室

字符&指针&多维数组 结合 感觉转不过来了。

stop1204 发布于 2017-12-14 04:56, 1541 次点击
看着书说明,一步步倒是做出来了,看着都懂
 再去重头想,一点头绪都没了

书上说不建议使用数组与指针
数组可以用 vector 替代 ,指针呢?

程序代码:

int main()
{

int  ia[3][4]  =  {
   {0, 1, 2, 3} ,
   {4, 5, 6, 7} ,      
   {8, 9, 10, 11} };

for(int (*p)[4]=ia;p!=ia+3;++p){
    for(int *q=*p;q!=*p+4;++q)
         cout<<*q<< " ";
cout<<endl;
}
}



//编写程序读入一组 string 类型的数据,并将它们存储在 vector 中。接着,把该 vector 对象复制给一个字符指针数组。为 vector 中的每个元素创建一个新的字符数组,并把该 vector 元素的数据复制到相应的字符数组中,最后把指向该数组的指针插入字符指针数组。

int main()
{
vector<string> svec;
string str;

while(cin>>str)
svec.push_back(str);

char **p=new char*[svec.size()];
size_t ix=0;
for(vector<string>::iterator ster=svec.begin();ster!=svec.end();++ster,ix++){
     char *ptmp=new char[(*ster).size()+1];
     strcpy(ptmp,(*ster).c_str());
     p[ix] = ptmp;
}
cout<<*(*p+1)<<" "<<*p<<" "<<*(p+1)<<" "<<(p[1]+1)<<*p+1;//观察

cout<<endl<<p;
for(ix=0;ix<svec.size();++ix)
delete [] p[ix];

delete [] p;

    return 0;
}










[此贴子已经被作者于2017-12-14 04:59编辑过]

2 回复
#2
stop12042017-12-14 05:32
什么情况下必须使用指针或者数组?

vector用迭代器   数组用指针  ,这是应用于容器
指针的其他功能用什么替代 (比如指向普通对象)。 引用吗?

#3
stop12042017-12-14 05:44
while(){
  int a=0;


循环体内的a 是不是 每次循环一次都会释放。
就是第一次初始化,然后到第一次循环结束就释放了。
然后第二次再初始化 再释放。

我所设想的,
while ( 条件作用域  (    语句作用域   )   #loop)
1