【发布时间】:2012-12-28 13:50:29
【问题描述】:
谁能给我解释一下:
(((((*(parent))->leaves))[7])->zone_id)
指向指针的指针真的让我感到困惑。这是我在调试模式下从手表得到的表达式。我正在尝试访问树的最后一个元素内的字符串zone_id(有 10 个元素,每个元素对应不同的数字 0-9)。
编辑:这是整个搜索功能,希望它足以理解:
string Tree::search(string str, node** parent, int num) {
int value;
if (num < str.length()) {
value = boost::lexical_cast<int> (str.substr(num, 1));
if ((*parent)->leaves[value] != NULL && num != str.length() -1) {
search (str, &((*parent)->leaves[value]), num+1);
} else if (num == str.length() -1) {
if ( (*(parent)->leaves)[value]->zone_id.empty() )
cout<<"Yep.";
else
return (string) "No_results.";
}
}
}
和结构:
struct node {
string zone_id;
node* leaves [10];
};
【问题讨论】:
-
您对此有何困惑?你不明白为什么它的工作?或者它应该如何工作?
-
您对参数使用双指针对我来说似乎没有必要。为什么不
const node*?此外,只有在找不到空的 zone_id 时才返回任何内容,这肯定会在您以后使用不存在的返回值时导致重大问题(如分段错误)。