Передача массива из main() в функцию и обратно - C (СИ)
Формулировка задачи:
Доброго времени суток!
Пишу на С программку, чтобы отработать на ней передачу массива из main() в функцию и обратно. В функцию вроде передавать получается, обратно в main() перекидывать - нет
Можете помочь?
Краткое описание программы: в main() задан массив, пересылаем в функцию F, принимаем результат, вывод на экран. Функция F по сути генерация следующего двоичного числа. Т.е. если на входе будет 001, то на выходе - 010, если на входе - 010, то на выходе - 011 и т.д. Логика, надеюсь, понятна, может даже кому-то и пригодиться этот кусочек кода Закомментированные строки - просто чтобы убедиться, что в F массив приходит правильно
# include <stdio.h>
int F(int *mass,int n){
int buff=1;
int i=n;
int j;
while (buff!=0 && i>0){
i--;
buff=mass[i];
}
if (i!=0){
mass[i]=1;
for (j=i+1; j<n; j++)
mass[j]=0;
}
//for (i=0; i<n; i++)
//printf("%i", mass[i]);
return *mass[0];
}
int main(){
int i;
int mass[4]={0,0,0,1};
int* Mas[4];
*Mas[0]=F(&mass[0],4);
for (i=0; i<4; i++)
printf("%i",Mas[i]);
return 0;
}Решение задачи: «Передача массива из main() в функцию и обратно»
textual
Листинг программы
F(&mass[0],4);
for (i=0; i<4; i++)
printf("%i",mass[i]);
Объяснение кода листинга программы
В данном коде:
mass- это массив, который содержит 4 элемента.i- это переменная, которая используется в цикле for и принимает значения от 0 до 3.F- это функция, которая принимает два аргумента: указатель на первый элемент массива и количество элементов.- Внутри функции
Fпроисходит передача массива и его размера в другую функцию, которая не указана в данном коде. - После передачи массива в функцию, его размер уменьшается на 1, и теперь он содержит только 3 элемента.
- Затем, внутри функции
F, происходит возвращение массива обратно в основную программу. - После возвращения массива в основную программу, его размер восстанавливается на 4 элемента.
- Затем, в основной программе, происходит печать элементов массива с помощью функции
printf. - Печатаются элементы массива с индексами от 0 до 3.