0

这是一个家庭作业问题,我相信这是一个语法问题。我有一个程序,它的方法使用字符数组来表示字符串。我正在尝试将部分数组复制到一个临时变量中。我传入这些变量:

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类型(我不知道这是否与问题有关)。我不知道我该如何解决这个问题。有人可以帮忙吗?

4

1 回答 1

2
arr1[l]

arr1[l]是一个数组(char[20]特别是 a )。数组不是可修改的左值,因此它们是不可赋值的。

您需要复制 to 指向的数组的temp内容arr1[l]。但是,如果您尝试交换行或类似的东西,您需要分配一些中间存储,因为

char *temp = arr2[l];

不复制内容,所以

memcpy(arr2[l], source, some_size);

会改变temp指向的内容,旧的内容arr2[l]会丢失。

于 2013-05-01T14:22:50.370 回答