Статья: Функции в С++

// ...

return 1; // неявно преобразуется к double(1)

}

Каждый раз, когда вызывается функция, создается новая копия ее параметров и автоматических переменных. После возврата из функции память используется заново, поэтому возвращать указатель на локальную переменную неразумно. Содержание указываемого места изменится непредсказуемо:

int* f() {

int local = 1;

// ...

return &local; // так не делайте

}

Эта ошибка менее обычна, чем эквивалентная ошибка при использовании ссылок:

int& f() {

int local = 1;

// ...

return local; // такнеделайте

}

К счастью, о таких возвращаемых значениях предупреждает компилятор.

Вот другой пример:

int& f() { return 1;} // так не делайте

Векторные Параметры

Если в качестве параметра функции используется вектор, то передается указатель на его первый элемент.

Например:

int strlen(const char*);

void f()

{

char v[] = "a vector"

strlen(v);

strlen("Nicholas");

};

Иначе говоря, при передаче как параметр типа T[] преобразуется к T*. Следовательно, присваивание элементу векторного параметра изменяет значение элемента вектора, который является параметром. Другими словами, вектор отличается от всех остальных типов тем, что вектор не передается (и не может передаваться) по значению.

К-во Просмотров: 556
Бесплатно скачать Статья: Функции в С++