Блог для маленьких школьников и их родителей
ШколаЛа

Язык С. Задание на фотографии. Просьба: с комментариями решения.

Автор:
Предмет: Информатика
Уровень: студенческий

Язык С. Задание на фотографии. Просьба: с комментариями решения.

Ответов к вопросу: 1
  • majsaramardanova
    20.12.2024 | 00:07

    Немного теории:
    Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
    Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x — указатель на первый элемент массива. А его значение как *(x+i)
    Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он «сдвигается» не на i байтов, а на i элементов этого типа.

    В данном задании:
    int a[]= {7,8,9} — инициализация массива. По сути, это описание и присваивание значения одновременно. После выполнения этой строчки: a[0]=7; a[1]=8; a[2]=9 — массив из трех элементов, нумерация с нуля.
    int *b=a —  Эта строчка переводится как «создаем переменную b типа указатель на целое и присваем ему адрес нулевого элемента массива».
    *(b+2)=b+1 — очень странная запись.
    *(b+2) равносильно a[2] — значение последнего элемента данного массива. Переменная b содержит целое число, которое является адресом нулевого элемента массива. b+1 — указатель «сдвигается на 1 элемент вправо», т.е (b+1) — адрес первого элемента массива.
    То есть данная запись означает, что в последний элемент массива(a[2] в данном случае) записывается адрес первого элемента массива(a[1] в данном случае).
    b[1] — такая запись указателя с индексом равносильна a[1] — значению первого элемента массива.
    В итоге: b[1] <=> a[1]=8
    Примечание:
    Изначально ваша программа не выполниться, так как запись int b*=a — неверная(правильно int *b=a)

Ответить на вопрос:
:p :-p 8) 8-) :lol: =( :( :-( :8 ;) ;-) :(( :o:
Нажимая на кнопку я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.