ВУЗ:
Составители:
Рубрика:
на экран будет выдана стрoка WORLD, так как счет элементов массива
начинается с нуля (символ 'W' является седьмым элементом). Рассмотрим
другую программу.
/* программа # 1.16 */
void array_1(int ,int *);
void main()
{
int array[20];
array_1 (20,array);
}
/*эта функция заполняет массив единицами */
void array_1(int n,int *array)
{
int i;
for (i = 0 ; i < n; i++)
*(array + i) = 1; /// что эквивалентно array[i] = 1;
}
В этой программе объявлен целочисленный массив из 20 элементов. При
вызове функции array_1 массив заполняется единицами. Формальными
параметрами являются число элементов массива и адрес первого элемента,
который поименован в данной программе идентификатором array. В теле
функции в операторе *(array + i) = 1; в скобках вычисляется адрес элемента
массива, а затем используется операция '*' - запись по адресу. Эквивалентный
оператор: array[i] = 1; Отсюда ясно, почему индексация элементов массива в Си
начинается с нуля: используется базовый адрес массива + смещение. Если
смещение равно нулю (i =0), то мы адресуемся к первому элементу массива.
1.7 Использование указателей для связи функций
В большинстве языков программирования параметры подпрограммам
(функциям) передаются либо по ссылке (by reference), либо по значению (by
value). В первом случае подпрограмма (функция) работает с адресом
переменной, переданным ей в качестве фактического параметра. Во втором
случае ей доступна не сама переменная, а только ее значение (копия числа).
Различие здесь такое: переменную, переданную по ссылке, функция может
модифицировать в вызвавшей ее функции, а переданную по значению - нет.
В языке Си параметры передаются только по значению. Общепринятый
способ обеспечить функции непосредственный доступ к какой-либо
переменной из вызывающей подпрограммы состоит в том, чтобы вместо
самой переменной в качестве параметра передавать ее адрес.
16
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »