将char指针重新指定给char数组的有效方法

时间:2018-02-17 19:17:22

标签: arrays pointers

我正在处理char数组和指向数组的指针。

char firstAr[10] = "First";
char secondAr[10] = "Second";
char thirdAr[10] = "Third";

char* arPtrOne = firstAr;
char* arPtrTwo = secondAr;
char* arPtrThree = thirdAr;

我还有第二组char数组

char fourthAr[10] = "Fourth";
char fifthAr[10] = "Fifth";
char sixthAr[10] = "Sixth";

上面的char数组和char指针不能改变(我必须使用它们)。我需要更改指针指向的char数组,以便它们现在指向第二组char数组。我知道我可以通过以下方式做到这一点,

arPtrOne = fourthAr;
arPtrTwo = fifthAr;
arPtrThree = sixthAr; 

这对我上面的例子来说很好,但如果我有100个数组,我需要100个语句将它们全部指向新的char数组。我希望有人可以帮助我找到一个更有效的方法,为我上面的例子做这个。

要停止任何重复工作,并帮助有相同问题的其他人发现所有相关信息,这也发布在https://forum.arduino.cc/index.php?topic=529860.0

2 个答案:

答案 0 :(得分:0)

如何使用char**

char* l_arry[100];

你可以:

l_arry[0] = //your first string;
l_arry[1] = //your second string;
l_arry[2] = //your third string;

答案 1 :(得分:0)

由于我无法弄清楚如何将现有指针指向循环内的新char,我决定使用新的char数组内容填充原始数组。为此,我在数组char指针中创建了所有新的char数组,以便我可以在for循环中引用它们。然后我创建了一个新的char *数组,并将它们指向原始数组。然后我在for循环中使用strcpy将新数组的内容复制到原始数组。这意味着原始指针保持不变并仍然指向原始数组,但现在数组已更新内容。这与将指针指向新的c数组而不必实际执行此操作具有相同的效果。

char firstAr[10] = "First";
char secondAr[10] = "Second";
char thirdAr[10] = "Third";

char* arPtrOne = firstAr;
char* arPtrTwo = secondAr;
char* arPtrThree = thirdAr;

char *newStrings[3][10]=
{
    "Fourth",
    "Fifth",
    "Sixth"
};

char *newPtrs[3]=
{
    firstAr,
    secondAr,
    thirdAr
};


for(int i = 0; i<3;i++)
{
    strcpy (newPtrs[i], newStrings[i]); 
}