Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2010, 23:42   #11
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
return ar;
free(ar);
}
WOW! Точно в быдлокод, или шедевры надо отправить. Вы в курсе о логике работы return/ret ? Вам был уже дан ответ от Chris D, он явно показал как использовать внутри функции типа out используя ссылки и указатели. То что вы написали только показывает ваше не понимание того что написано и потянет за собой утечки памяти как малая из проблем.
BOBAH13 вне форума Ответить с цитированием
Старый 14.10.2010, 00:32   #12
_ILYA_
Пользователь
 
Аватар для _ILYA_
 
Регистрация: 12.10.2010
Сообщений: 79
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Код:
return ar;
free(ar);
}
WOW! Точно в быдлокод, или шедевры надо отправить. Вы в курсе о логике работы return/ret ? Вам был уже дан ответ от Chris D, он явно показал как использовать внутри функции типа out используя ссылки и указатели. То что вы написали только показывает ваше не понимание того что написано и потянет за собой утечки памяти как малая из проблем.
может не стоит так резко, ошибаться одна из за документированных человеческих функций
Имею хитрый план по личному обогащению
_ILYA_ вне форума Ответить с цитированием
Старый 14.10.2010, 09:14   #13
Chris D
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 31
По умолчанию

Код:
double* txt2double(char *string , int size){
		
		double *ar;
		int k = 0;
		int i = 0;
		int j = 0; 
		
		int length = strlen(string);
		char tmp[255];

		memset(tmp, 0, sizeof(tmp));
		ar = (double *) calloc(size, sizeof(double));		
		// ar = new double *[size];
		// ar = (double *) malloc(size * sizeof(double));
		
		// Обрати внимание !!! Если рассматривать malloc и calloc, то первая работает быстрее
		// ввиду того, что отсутсвует функция обнуления выделяемой памяти...
		
		printf("%d\n",length);

		while(i != length){
			if(string[i] != ';'){
				tmp[j] = string[i];
				j++;
				i++;
				printf("%s\n",tmp);
			}
			if(string[i] == ';'){
				tmp[j + 1] = '\0';
				ar[k] = atof(tmp);
				printf("%f\n",ar[k]);

				memset(tmp, 0, sizeof(tmp));
				printf("%s\n",tmp);
				k++;
				j=0;
				i++;
			}	
		}
		return (double *)(size + k);
		// или (double *)(size = k);
		// или (double *)(size += k);
		// в зависимости от того что ты хочешь добиться..
		free(ar);
}
int main()
{
		char sArray[] = "fdgsdf;gfg;dfg;dfgd;dfg";
		int sLenght = strlen(sArray);
		
		cout << txt2double(sArray, sLenght) << "\n" << sLenght << endl;
		// Смотри на то, как возвращается (size + k), значение size приняло  новое значение только внутри функции
		// и вернуло то, что ты просил в вопросе... Исходное значение в main не менялось...
		// Это называется !!! передача по значению !!!
		
		// если бы мы сделали так - double* txt2double(char *string , int &size)
		// в этом случае функия поменяла бы исходное значение                переменной... так как передача происходила !!! по ссылке !!!...
		
			
		return 0;
}
Писал опять же в блокноте...
Я не совсем понимаю, что именно ты хочешь... Если это не то что нужно...
То объясни более подробно, чего ты хочешь добиться...
Chris D вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40
наследование. виртуальные ф-ции, помогите с дв-ем HoOpe Помощь студентам 0 16.06.2009 01:27
ф-ции и процедурыю работа с текстом katya36 Помощь студентам 8 13.04.2009 10:19