Обмен адресами через указатели и ошибка "Lvalue required as left operand of assignment" - C (СИ)

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

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

#include <stdio.h>
#include <cstdlib>
#include <locale>
#define LEN 5
 
double arr[LEN] = {1.1, 2.54, 0.8, 9.246, 3.0};
double tar1[LEN], tar2[LEN];

void copy_ind(double [], double [], int);
void copy_ptr(double *, double *, int);
 
int main(void)
{
    setlocale(LC_ALL, "Russian");
    copy_ind(arr, tar1, LEN);
    copy_ptr(arr, tar2, LEN);
    system("pause");
    
    return 0;
}
 
void copy_ind(double arr[], double zippo[], int len)
{
    int i;
    
    for (i=0; i<len; ++i)
        zippo[i]=arr[i];
    printf("Элементы массива tar1 = ");
    for (i=0; i<len; ++i)
        printf("%.3lf ", zippo[i]);
    putchar('\n');
}
 
void copy_ptr(double *arr, double *zippo, int len)
{
    double *i;
    int k=0;
    
    for(i=arr; k<len; ++i, ++k)
        *(zippo+k)=*i;
    printf("Элементы массива tar2 = ");
    for (k=0; k<len; ++k)
        printf("%.3lf ", *(zippo+k));
    putchar('\n');
}
Делаю задания по книжке. Мне нужно скопировать массив в другой массив двумя способами: с помощью индексов и с помощью указателей. Первый способ работает. Второй способ тоже работает, но сначала я пытался сделать так в строчке 41:
zippo+k=i;
то есть я хотел адресами обменяться, а потом уже вывести на экран значение. Но при попытке компиляции выдавало: lvalue required as left operand of assignment. Загуглив, я так и не понял, что значит эта ошибка. Как реализовать этот вариант, но без ошибки при компиляции ?

Решение задачи: «Обмен адресами через указатели и ошибка "Lvalue required as left operand of assignment"»

textual
Листинг программы
int x=0;
// x+2=5; так нельзя
x = 3; // а так можно

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

  1. Объявляется переменная типа int с именем x и инициализируется значением 0.
  2. На следующей строке кода происходит попытка присвоить значение 5 переменной x с шагом 2, но компилятор выдает ошибку Lvalue required as left operand of assignment, так как выражение x+2 не является допустимым левым операндом для присваивания.
  3. На следующей строке кода значение переменной x присваивается значение 3.

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


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

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

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