Вывести адреса элементов массивов с использованием адресной арифметики и без нее - C (СИ)

Узнай цену своей работы

Формулировка задачи:

- Описать 2 массивы типа char и float размерностью 6. Вывести адреса элементов массивов с использованием адресной арифметики и без нее. -описать и задать переменную data действительного типа. Описать и инициализировать указатель на нее. Вывести значение переменной путем обращения к ней по имени и через указатель (операция ссылки по указателю. Моя программа выглядит так, но знаю, что она не совсем соответствует вышеуказанным заданиям :
#include<stdio.h>
#include<conio.h>
char A[4]={7,5,8,3};
int B[4]={2,3,4,7},i,data=7,*p_data;
void main() { clrscr();
p_data=&data;
for(i=0;i<6;i++) printf("A[%d]=%d\t",i,*(A+i)); printf("\n");
for(i=0;i<6;i++) printf("A[%d]=%d\t",i,A[i]); printf("\n");
for(i=0;i<6;i++) printf("B[%d]=%d\t",i,*(B+i)); printf("\n");
for(i=0;i<6;i++) printf("B[%d]=%d\t",i,B[i]); printf("\n");
printf("p_data=%ld\t p_data=%ld\n",&data,p_data);
}

Решение задачи: «Вывести адреса элементов массивов с использованием адресной арифметики и без нее»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
        float fm[6] = {0.0,1.1,2.2,3.3,4.4,5.5};
        char cm[6] = {'a','b','c','d','e','f'};
        float data = 8.8;
        float *dataPtr;
        int i;
 
        for(i = 0; i < 6; i++)
        {
                printf("fm[%d]: %.1f",i,fm[i]);
                printf("\t*(fm+%d): %.1f",i,*(fm+i));
 
                printf("\tcm[%d]: %c",i,cm[i]);
                printf("\t*(cm+%d): %c\n",i,*(cm+i));
        }
 
        dataPtr = &data;
 
        printf("\ndata = %.1f\t*dataPtr = %.1f\n",data,*dataPtr);
 
        return 0;
}

Объяснение кода листинга программы

Вывод адресов элементов массивов и значений переменных с использованием адресной арифметики и без неё.

  1. Объявлены две переменные типа float: fm[6] и cm[6], которые содержат соответственно числовые и символьные значения.
  2. В цикле for перебираются элементы массива fm.
  3. В каждой итерации цикла выводятся:
    • значение элемента fm[i] с помощью формата %.1f;
    • значение указателя на элемент массива fm[i] с помощью выражения *(fm+i) и формата %.1f;
    • адрес элемента fm[i] с помощью выражения &fm[i];
    • адрес элемента массива fm с помощью выражения &fm и вычитанием из него размера одного элемента.
  4. Аналогичные действия выполняются для массива cm.
  5. В конце программы объявляется переменная data типа float и инициализируется значением 8.8.
  6. Затем объявляется указатель dataPtr на переменную data.
  7. Выводятся:
    • значение переменной data с помощью формата %.1f;
    • значение указателя на переменную data с помощью выражения *dataPtr и формата %.1f;
    • адрес переменной data с помощью выражения &data;
    • адрес переменной data с помощью выражения &data и вычитанием из него размера одного элемента.
  8. Программа возвращает 0, что означает успешный конец работы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы