C++检查两个版本的函数

hak*_*ata 2 c++ arrays pointers function point

我正在用C++编写一个练习,并且我编写了一个在我看来有效的代码,但我不确定,因为我还是初学者,有人可以检查它并告诉我它们是否是相同与否.

解决方案代码:

Point *PointArray::get( const int pos) {
    return pos >= 0 && pos < size ? points + pos : NULL;
}
Run Code Online (Sandbox Code Playgroud)

我的代码是:

Point* PointArray::get (const int position) {
    return &(data[position]);
}
Run Code Online (Sandbox Code Playgroud)

我意识到在我的代码中我必须检查条件以检查是否返回空指针,但除此之外,我的版本是否与 points + pos

points&data是Point类的数组,我命名为我的数据,名为它的解决方案.

编辑:

我添加条件后的代码:

Point* PointArray::get (const int position) {
    return ((position >= 0 && position < size) ? &(data[position]) : NULL);
}
Run Code Online (Sandbox Code Playgroud)

Dav*_* Z. 5

简而言之,他们做同样的事情.但是有一些不同之处:

1)解决方案代码检查数组边界.你的解决方案没有.

2)解决方案使用指针算法并避免额外的解引用/地址操作(大多数编译器将为您优化此操作).请参阅效率:数组与指针.