Привет, ребята у меня есть вопрос,печати массив из указателей
У меня есть массив с 10 элементами и функцией, которая возвращает меня указатель на случайно выбранный элемент в массиве. Теперь я хочу напечатать массив из этого элемента, на который указывает указатель, как я могу это сделать.
Пример: Массив: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 указатель указывает на элемент 6. Я хочу напечатать: 6, 7, 8, 9, 10
код выглядит в C:
int* randomElement(int* array, int size) {
int* pointer = NULL;
int randomNumber = 0;
randomNumber = rand() % size;
*pointer = *(array + randomNumber);
return pointer;
}
int main(void) {
int size = 10;
int array[size];
int* pointer = NULL;
srand(time(NULL));
pointer = randomElement(array, size);
/* Want to print the array from this element here */
return EXIT_SUCCESS;
}
Это сложно, потому что вы не знаете, где закончить цикл ... так что я думаю, вам может понадобиться другая информация, такая как начальный адрес массива –
'* pointer = * (array + randomNumber)' is очень плохо в этом контексте. Вы должны удалить оба '*' s. –
Теперь самое время посмотреть на арифметику указателя. Как и s + 4 ~ = s [4], & s [4] -s = 4 ... или для копирования массива с завершающим 0 путем увеличения указателя 'while (* s) * d ++ = * s ++;' – technosaurus