最近,当我需要将它作为对C ++中另一个函数的引用传递时,我遇到了使用数组地址的问题。例如:
void do_something(float * arr, int size) {
//Will do something about the arr
}
int main () {
float array[] = {1, 2, 3, 4};
do_something(array, 4); // this will work well
do_something(&array, 4); // this will cause error
return 0;
}
但是当我尝试打印出数组和&数组时,它们是相同的。你们知道这是什么原因吗?
答案 0 :(得分:1)
以下是使用std::vector
:
#include <vector>
void do_something(const std::vector<float>& arr) {
// Use arr for whatever.
}
int main() {
std::vector<float> arr = { 1, 2, 3, 4 };
do_something(arr);
return 0;
}
此初始化程序需要C ++ 11模式,如果打开该标志,大多数编译器都会支持该模式。