2013-12-20 2 views
1

У меня есть 2 массива в основной функции, один двойной и один целочисленный типы. Я хочу написать функцию, назовем ее «func1», и я хочу отправить ей 2 массива. Я собираюсь выполнить некоторые операции (я могу подробно описать операции, если это необходимо) для двух других типов, а затем вернуть две функции моей основной функции.Передача и возврат 2 массивов из функции в C

Я понимаю, что невозможно вернуть два объекта один раз, поэтому я думаю, что должен передавать и возвращать указатели.

То, что я попытался это:

int main (void){ 
... 
int str2[]=... 
double str3[]=... 
func1 (&str2, &str3) /* Thş was the best suggestion I could find on the internet */ 
... 
} 

void func1 (int *intType, double *doubleType){ 
... 
intType[33]=27; /* just for example */ 
... 
return; 
} 

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

P.S. Я действительно не знаю, что я делаю неправильно, и я не мастер C, похоже, у меня серьезные проблемы с прохождением указателей, поэтому не сердитесь на меня, пожалуйста.

Спасибо!

ответ

3

Вы не за горами:

void func1 (int *intType, double *doubleType); // note: prototype 

int main (void) 
{ 
    int str2[100]; 
    double str3[100]; 
    func1 (str2, str3); // note: no `&` on the parameters here 
    return 0; 
} 

void func1 (int *intType, double *doubleType) 
{ 
    intType[33] = 27; 
    doubleType[42] = 1.0; 
} 
+1

ну, это просто решить мои проблемы. Я ожидал чего-то более сложного :) Спасибо! – user3108849

+0

Обратите внимание, что вы всегда должны компилировать с включенными предупреждениями - это позволит компилятору указать на различные виды основной ошибки. –

+0

Да, они всегда включены, но я просто недостаточно опытен, чтобы понимать и решать всевозможные предупреждения, как этот :) – user3108849

1
int main (void){ 
... 
int str2[]=... 
double str3[]=... 
func1 (str2, str3) /* Thş was the best suggestion I could find on the internet */ 
... 
} 

void func1 (int intType[], double doubleType[]){ 
... 
intType[33]=27; /* just for example */ 
... 
return; 
} 
+0

он работает, спасибо man :) – user3108849

+0

если он работает, + 1 и/или отметьте его как ответ и добавьте что-нибудь еще, что вы обнаружили о своей проблеме в комментариях, для будущих зрителей , – gaurav5430

+1

хорошо, что у меня еще нет репутации до +1, и ожидаю ограничения времени, чтобы выбрать один из них, спасибо за предупреждение :) – user3108849

Смежные вопросы