Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функция возращающая несколько значений. Вопрос.

11K
14 июля 2006 года
dafirst
38 / / 05.07.2006
Необходимо чтобы функция возвращала несколько значений через аргументы:
с целыми типа int проблем нет.

Проблема появляется когда необходимо вернуть две строки.
для int у меня это выглядит так:

void GetMaxQuant(int*,int*,int*);


int main(int argc, char* argv[])
{
int j,i,z,n;
GetMaxQuant(&i,&j,&z);
return 0;
}


void GetMaxQuant(int*x,int*y,int*z1)
{
*x=11;
*y=61;
*z1=41;
};

Как сделать тоже для char*??????
725
14 июля 2006 года
UnErase
190 / / 08.06.2006
Код:
void GetMaxQuant(char*,char*,char*);

int main(int argc, char* argv[])
{
char j[50],i[50],z[50],n[50];
GetMaxQuant(&i[0],&j[0],&z[0]);
return 0;
}


void GetMaxQuant(char*x,char*y,char*z1)
{
strcpy(x, "string1");
strcpy(y, "string2");
strcpy(z1, "string3");
};


Так вроде...
11K
14 июля 2006 года
dafirst
38 / / 05.07.2006
[QUOTE=UnErase]
Код:
void GetMaxQuant(char*,char*,char*);

int main(int argc, char* argv[])
{
char j[50],i[50],z[50],n[50];
GetMaxQuant(&i[0],&j[0],&z[0]);
return 0;
}


void GetMaxQuant(char*x,char*y,char*z1)
{
strcpy(x, "string1");
strcpy(y, "string2");
strcpy(z1, "string3");
};


Так вроде...[/QUOTE]

к сожалению нет....


[C++ Error] Unit1.cpp(14): E2034 Cannot convert 'char ( *)[50]' to 'char *'
[C++ Error] Unit1.cpp(14): E2340 Type mismatch in parameter 1 (wanted 'char *', got 'char ( *)[50]')
[C++ Error] Unit1.cpp(14): E2034 Cannot convert 'char ( *)[50]' to 'char *'
[C++ Error] Unit1.cpp(14): E2340 Type mismatch in parameter 2 (wanted 'char *', got 'char ( *)[50]')
[C++ Error] Unit1.cpp(14): E2034 Cannot convert 'char ( *)[50]' to 'char *'
[C++ Error] Unit1.cpp(14): E2340 Type mismatch in parameter 3 (wanted 'char *', got 'char ( *)[50]')
725
14 июля 2006 года
UnErase
190 / / 08.06.2006
GetMaxQuant(&i[0],&j[0],&z[0]);

ты уверен что ты ее так вызываешь?
надо указать не &i, а &i[0]
соответственно не &j, a &j[0]
и т.д.
Это потому что надо передать адрес первого символа строки...
попробуй еще раз!
11K
14 июля 2006 года
dafirst
38 / / 05.07.2006
[QUOTE=UnErase]GetMaxQuant(&i[0],&j[0],&z[0]);

ты уверен что ты ее так вызываешь?
надо указать не &i, а &i[0]
соответственно не &j, a &j[0]
и т.д.
Это потому что надо передать адрес первого символа строки...
попробуй еще раз![/QUOTE]


урааа!!!!!!

спасибо что отредактировал свое первое сообщение в лучшую сторону... теперь работает..........)))))))))))))))
242
14 июля 2006 года
Оlga
2.2K / / 04.02.2006
думаю все таки надо понять, что массивы любого типа, в том числе и строки, передаются по ссылке, поэтому вся эта вышеописанная красота не нужна(надеюсь Борланд не сделала такого тупого исключения :-))
Код:
[LEFT]void GetMaxQuant(char*,char*,char*);[/LEFT]
 
[LEFT]int main(int argc, char* argv[])
{
char j[50],i[50],z[50],n[50];
[COLOR=red]GetMaxQuant(i,j,z); [/COLOR][COLOR=seagreen]/*результат будет такой же, функция получит адресс нулевой ячейки. вышеописанный метод используют если не хотят передавать строку с нулевого адресса, а c [3] например*/[/COLOR]
return 0;
}[/LEFT]
 
 
[LEFT]void GetMaxQuant(char*x,char*y,char*z1)
{
strcpy(x, "string1");
strcpy(y, "string2");
strcpy(z1, "string3");[/LEFT]
 
[LEFT]};[/LEFT]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог