crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Время жизни переменных, не понимаю одного момента
Litkevich Yuriy
  опции профиля:
сообщение 2.2.2008, 16:24
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Переменные созданные внутри функций живут пока мы невышли из фукции, так вроде.
Видел такую вещь:
int* func (foo foovar)
{
int foodim[8];
...
...
...
return foodim;
}

т.е. функция возвращает указатель на масив, который в ней же создан. Но покинув функцию масив прекратит существование и указатель будет показывать в кучу проги, например, может показывать в неосмысленное место.
Я правильно понимаю, т.е. это косячек програмиста, или как-то это иначе работает применительно просто к C++?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 2.2.2008, 17:07
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


понял, значит я не зря переписал этот кусок кода, в следующий вриант:

int (foo foovar, int *p, int cnt)
{
...
p[0]=foo1;
p[1]=foo2;
p[2]=foo3;
...
}

// где то дальше по коду
....
const int MAX=8;
int foodim[MAX];
int  b;
func(foovar, foodim, MAX);
b=foodim[2];


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

Я переделал так чтобы функция получала указатель на масив и длину, если она по какой то причине хочет заполнять больше чем длина масива, то вернет не нуль.

А было так, что функция сама формировала масив и возвращала указатель на него.

Сообщение отредактировал Litkevich Yuriy - 2.2.2008, 17:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Тема закрытаНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.1.2025, 14:03