hur.cn - 华软网

 热门搜索

关于指向数组的指针?

  作者:未知    来源:网络    更新时间:2011/4/13
int _tmain(int argc, _TCHAR* argv[])
{
string strIpt;
vector<string> vstrTmp;
cout << "Input string : " << endl;
while ( cin >> strIpt )
vstrTmp.push_back(strIpt);
int nLen = vstrTmp.size();
// 指向指针的指针
char*  *c_tmp = new char*[nLen];
int i = 0;
for ( vector<string>::const_iterator iter = vstrTmp.begin(); iter != vstrTmp.end(); iter++, i++ )
{
char *p = new char[(*iter).size() + 1];
// p是一个char指针,指向了一个字符串首地址,例如"abc"指向了a
strcpy(p, (*iter).c_str());
// c_tmp指针又指向了char*指针
*(c_tmp + i) = p;
cout << (*iter).c_str() << " " << "11111" << endl;
cout << *(p + i) << " " << "22222" << endl;
//cout << *(c_tmp + i) << endl;
cout << *(*(c_tmp + i) + 1) << endl;
//c_tmp[i] = p;
}


for ( i = 0; i != vstrTmp.size(); i++ )
{
delete [] c_tmp[i];
}

delete [] c_tmp;
}

如何理解指针的指针,也就是我注释写的东西?麻烦详细说明下
---华软 网友回答---
指针寄存地址
指针的指针就是寄存指针的地址
---华软网友回复---
推荐看一下林锐的《C++高质量编程
---华软网友回复---
C语言用指针的指针
C++用指针的引用也行
---华软网友回复---
//cout << *(c_tmp + i) << endl;
//c_tmp[i] = p;

*(c_tmp + i)和c_tmp[i]表示一个意思
---华软网友回复---
两重指针,保存指针的地址..
---华软网友回复---
指针的指针 p,也就是说,p指向的内存空间里寄存的是一个指针X,而这个指针X又指向了其它的一个内存地址。例如:

  int num=9;
  int *pnum=&num;
  int **ppnum=&pnum;

  cout<<num<<endl;
  cout<<*pnum<<endl;
  cout<<**ppnum<<endl;

这样输出的三个都是 9 。
---华软网友回复---
赞成一楼。。。。
---华软网友回复---
  class="deleted_message"> 该回复于2011-04-18 14:42:19被版主删除
---华软网友回复---
写着门牌号码的门牌号码      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。