Хранить и передавать данные в виде массива из функции в другую функцию или код

#arrays #c #function

#массивы #c #функция

Вопрос:

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

 #include <stdio.h>

int f_arrPlate (int n)
{
    int plate[10];
    printf ("nPlate = ");
    scanf("%d",amp;plate[n]);
    printf("%d_Number = %dn",n,plate[n]);

    }

int main ()
{
    int n,plate[10];
    for (n=1;n<=10;n  ){
        f_arrPlate(n);
        }

    for (n=1;n<=10;n  ){
         printf("%d_Number = %dn",n,plate[n]);




    }
}
 

Комментарии:

1. Программа не имеет смысла.

Ответ №1:

Вы изменяете локальное plate значение в функции f_arrPlate , а plate не в самой функции main . При plate f_arrPlate возврате из функции in становится недействительным.

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

Также обратите внимание, что индекс массива в C начинается с 0, а не с 1. Поэтому вы должны сделать смещение или выделить еще один элемент, чтобы избежать доступа вне диапазона.

Исправить с помощью дополнительного аргумента и элемента:

 #include <stdio.h>

int f_arrPlate (int* plate, int n)
{
    printf ("nPlate = ");
    scanf("%d",amp;plate[n]);
    printf("%d_Number = %dn",n,plate[n]);

    }

int main ()
{
    int n,plate[11];
    for (n=1;n<=10;n  ){
        f_arrPlate(plate,n);
        }

    for (n=1;n<=10;n  ){
         printf("%d_Number = %dn",n,plate[n]);




    }
}
 

Исправить с помощью глобальной переменной и смещения:

 #include <stdio.h>

int plate[10];

int f_arrPlate (int n)
{
    printf ("nPlate = ");
    scanf("%d",amp;plate[n-1]);
    printf("%d_Number = %dn",n,plate[n-1]);

    }

int main ()
{
    int n;
    for (n=1;n<=10;n  ){
        f_arrPlate(n);
        }

    for (n=1;n<=10;n  ){
         printf("%d_Number = %dn",n,plate[n-1]);




    }
}