Использование адреса массива как параметра цикла в функции - C (СИ)
Формулировка задачи:
При выполнении вылетает сообщение об ошибке и аварийное завершение. Что не так в этой функции?
а через указатель всё получается:
//Функция возведения в квадрат массива.
void power(int size, float * ar) // параметры: размер и указатель на нулевой адрес массива
{
for( ;ar <= &ar[size]; ar++ ) *ar *= *ar; // использование адреса массива в кач параметра цикла
}//Функция возведения в квадрат массива с использованием вспомогательной переменной-указателя.
void power(int size, float * ar)
{
float * ptr=ar;
for( ;ptr <= &ar[size]; ptr++ ) *ptr *= *ptr; // доступ к массиву через указатель
}Решение задачи: «Использование адреса массива как параметра цикла в функции»
textual
Листинг программы
void power(int size, float * ar)
{
float * ptr=&ar[size]; // или ptr = ar+size;
for( ;ar <= ptr; ar++ ) *ar *= *ar;
}
Объяснение кода листинга программы
В данном коде представлена функция с именем power, которая принимает два аргумента: целочисленный аргумент size и аргумент ar типа float *. Внутри функции происходит следующее:
- Создается указатель
ptr, который указывает на элемент массиваarс индексомsize. Можно представить это какptr = ar + size. - Задается условие для цикла for, которое проверяет, что значение указателя
arменьше или равно значению указателяptr. - Внутри цикла происходит умножение значения элемента массива
arна значение элемента массиваar. - После выполнения цикла, функция завершается.
Следует отметить, что в данном коде предполагается, что массив
arбыл предварительно инициализирован значениями.