#include <iostream>
#include <vector>
void init()
{
std::vector<double> b;
b.push_back(10);
return;
}
double mean(double *array, size_t n)
{
double m=0;
for(size_t i=0; i<n; ++i)
{
m += array[i];
}
std::cout<<*array<<std::endl;
return m/n;
}
int test(int *b)
{
int dist;
dist=b[0];
return dist;
}
int main()
{
int x=0;
int y=0;
//double a[5]={1, 2, 3, 4, 5};
std::vector<double> a;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
std::cout<<mean(&a[0], 5)<<std::endl; // will print 3
init();
y=test(&b[0]);
std::cout<<y<<std::endl;
return 0;
}
Я пытаюсь проверить, могу ли я инициализировать вектор «b» в функции «init» и получить значение в «тестовой» функции, чтобы окончательно вернуться как «y» в главную функцию. Возможно ли это? Это просто тестовый код, чтобы изучить эту возможность.Передача вектора по ссылке
Трудно понять, с чего начать, почему 'main' объявлен как' int main (int * b) '? Что вы ожидаете от 'b' здесь? 'main' либо не имеет аргументов, либо ровно два,' int' и 'char *'. – user657267
'b' в init() больше не существует после завершения init(). Он также не имеет никакого отношения к 'b' в' main() 'или' b' в 'test()'. – drescherjm
Я вижу, поэтому я должен вернуть «b» в основную функцию как «return = init()». Мой вопрос: Какова роль init() в основной функции в ее текущей форме? – Far