我正在用C ++编写一个练习,并且我编写的代码在我看来是有效的,但我不确定,因为我还是初学者,有人可以检查它并告诉我是否它们是相同与否。
解决方案代码:
Point *PointArray::get( const int pos) {
return pos >= 0 && pos < size ? points + pos : NULL;
}
我的代码是:
Point* PointArray::get (const int position) {
return &(data[position]);
}
我意识到在我的代码中我必须检查条件以检查是否返回空指针,但除此之外,我的版本是否与points + pos
相同
points
&amp; data
是Point类的数组,我命名为我的数据,名为它的解决方案。
编辑:
我添加条件之后的代码:
Point* PointArray::get (const int position) {
return ((position >= 0 && position < size) ? &(data[position]) : NULL);
}
答案 0 :(得分:5)
简而言之,他们做同样的事情。但是有一些不同之处:
1)解决方案代码检查数组边界。你的解决方案没有。
2)解决方案使用指针算法并避免额外的解引用/地址操作(大多数编译器会为您优化此操作)。 请参阅Efficiency: arrays vs pointers。