Извините за это название. Я действительно не знал, как определить эту проблему.Указание на массивы с использованием функции void
Мне нужно было объявить целочисленный массив из N чисел и заполнить его случайными числами в функции void. Затем этот массив должен быть напечатан в основном. Дело в том, что мне не разрешено использовать printf в функции void, поэтому единственный способ печати в основном - использовать указатели, я думаю. Мои знания ограничены, поскольку я новичок в указателях. Thx заранее и извините за плохой английский.
Вот мой код. Когда я компилирую, он маркирует ошибку сегментации.
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void form();
int main()
{
int N, a[100];
printf("Input index: \n");
scanf("%d", &N);
form(N, &a);
printf("Array: \n");
for (int i = 0; i < N; i++) {
printf("a[%d] = %d", i, a[i]);
}
}
void form(int N, int *ptr[100])
{
srand(time(NULL));
for (int i = 0; i < N; i++) {
*ptr[i] = rand() % 46;
}
Вашего компилятор должен кричать на вас. Используйте правильный прототип, ваш код не соответствует стандарту и вызывает неопределенное поведение. (И это гораздо более фундаментально, чем указатели.Пропустили ли вы главу о функциях и объявлениях функций в своей книге C?) – Olaf
вы можете использовать 'printf' в любой функции, которую вы хотите. – user3528438
user3528438 Это школьное упражнение, и профессор сказал мне, чтобы я не использовал printf. @Olaf Правильно ли этот прототип: void form (int, int). Объявление функции кажется прекрасным. Так меня учили. – Misery