这是一个家庭作业问题,我认为这是一个语法问题。我有一个程序,使用一个方法,使用字符数组来表示字符串。我正在尝试将部分数组复制到临时变量中。我传递了这些变量:
int numbers[], char arr1[][20], char arr2[][20], int l, int r
并初始化/复制到临时变量中:
char *temp1;
char *temp2;
temp1 = arr1[l];
temp2 = arr2[l];
此代码编译,我相信它有效。当我尝试将临时变量分配给数组中的位置时,会出现问题。我试过了两个:
arr1[l] = temp1;
arr2[l] = temp2;
和
arr1[l] = &temp1;
arr2[l] = &temp2;
所有这些都会导致以下错误:
error: incompatible types in assignment
所以显然我没有正确地写这些陈述。两者都是char类型(我不知道这是否与问题有关)。我不知道如何解决这个问题。有人可以帮忙吗?
答案 0 :(得分:2)
arr1[l]
arr1[l]
是一个数组(具体为char[20]
)。数组不是可修改的左值,因此它们不可赋值。
您需要将temp
指向的数组内容复制到arr1[l]
。但是,如果您尝试交换行或类似的东西,则需要分配一些中间存储,因为
char *temp = arr2[l];
不会复制内容,所以
memcpy(arr2[l], source, some_size);
会更改temp
指向的内容,arr2[l]
的旧内容将会丢失。