Обмен адресами через указатели и ошибка "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');
}zippo+k=i;
Решение задачи: «Обмен адресами через указатели и ошибка "Lvalue required as left operand of assignment"»
textual
Листинг программы
int x=0; // x+2=5; так нельзя x = 3; // а так можно
Объяснение кода листинга программы
- Объявляется переменная типа int с именем
xи инициализируется значением 0. - На следующей строке кода происходит попытка присвоить значение 5 переменной
xс шагом 2, но компилятор выдает ошибкуLvalue required as left operand of assignment, так как выражениеx+2не является допустимым левым операндом для присваивания. - На следующей строке кода значение переменной
xприсваивается значение 3.