gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:43:41 24 4
gpt4 key购买 nike

我正在用 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 & data 是 Point 类的数组,我将其命名为 mine data,解决方案将其命名为 points。

编辑:

添加条件后的代码:

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

最佳答案

简而言之,他们做同样的事情。但还是有一些区别:

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

2) 该解决方案使用指针算法并避免了额外的取消引用/寻址操作(大多数编译器会为您优化它)。参见 Efficiency: arrays vs pointers .

关于C++ 检查函数的两个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com