помогите исправить ошибку с выражением при вызове функции
"Выражение должно иметь тип указателя на объект" как исправить ошибку при вызове функции с циклом
#include<stdio.h>
#include<math.h>
#include<iostream>
int vvodmass(int a[], int size)
{
printf("ввод массива");
int ch = 0;
printf("ввод рандомности массива");
scanf("%d", &ch);
for (int i = 0; i <= size; i++) {
a[i] = rand() % ch;
}
return 0;
}
int vyvodmass(int a[], int size) {
printf("вывод массива");
for (int i = 0; i <= size; i++) {
printf("%i\n", a[i]);
}
return 0;
}
int main() {
int x = 0;
int y = 0;
int vvodmass(x[]);
}
Ответы (1 шт):
Во-первых, в функции main Вы должны объявить переменную, к примеру size, в которой должно храниться целочисленное значение, для дальнейшего объявления массива. Вместо int x = 0;, Вы должны написать int x[size];, где size количество элементов массива. Также Вы должны исправить вызов функции, вместо int vvodmass(x[]); напишите vvodmass(x, size);.
Примечания:
Следующее, что я заметил, это то, что в циклах for Вы пробегаетесь с int = 0 и до i <= size, то есть когда Вы заполняете массив, вместо size элементов, Вы заполняете size + 1 элементов(Не забывайте про int = 0!). В результате вы выходите за границы массива, что приведёт к UB(Undefined Behavior - Неопределённое Поведение).
Функции vvodmass и vyvodmass возвращают 0, хотя по сути, вы никуда это значение не присваиваете, поэтому целесообразно было бы использовать тип фунцкии void и убрать последние строки return 0;, хотя не принципиально.