#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]);
}
}