Обмен адресами через указатели и ошибка "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" - C (СИ)»

textual
int x=0;
// x+2=5; так нельзя
x = 3; // а так можно

13   голосов, оценка 3.692 из 5


СОХРАНИТЬ ССЫЛКУ