Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用指针将一个数组的内容复制到另一个数组 我自己学习C++已经有一段时间了,到指针时我遇到了一个障碍。我用这个作为我的学习材料,但我仍然有一个问题。所以为了测试一些东西,我想把一个数组的内容复制到另一个数组中。我写了以下内容 char arrayA[15] = "abcdef"; char arrayB[15]; char *a = arrayA; char *b = arrayB; cout << "before loop:" << endl; cout << a << endl; cout << b << endl; while (*a != '\0') { // Copy the contents of a into b *b = *a; // Step a++; b++; } // Assign null to the end of arrayB *b = '\0'; cout << "after loop:" << endl; cout << a << endl; cout << b << endl;_C++ - Fatal编程技术网

使用指针将一个数组的内容复制到另一个数组 我自己学习C++已经有一段时间了,到指针时我遇到了一个障碍。我用这个作为我的学习材料,但我仍然有一个问题。所以为了测试一些东西,我想把一个数组的内容复制到另一个数组中。我写了以下内容 char arrayA[15] = "abcdef"; char arrayB[15]; char *a = arrayA; char *b = arrayB; cout << "before loop:" << endl; cout << a << endl; cout << b << endl; while (*a != '\0') { // Copy the contents of a into b *b = *a; // Step a++; b++; } // Assign null to the end of arrayB *b = '\0'; cout << "after loop:" << endl; cout << a << endl; cout << b << endl;

使用指针将一个数组的内容复制到另一个数组 我自己学习C++已经有一段时间了,到指针时我遇到了一个障碍。我用这个作为我的学习材料,但我仍然有一个问题。所以为了测试一些东西,我想把一个数组的内容复制到另一个数组中。我写了以下内容 char arrayA[15] = "abcdef"; char arrayB[15]; char *a = arrayA; char *b = arrayB; cout << "before loop:" << endl; cout << a << endl; cout << b << endl; while (*a != '\0') { // Copy the contents of a into b *b = *a; // Step a++; b++; } // Assign null to the end of arrayB *b = '\0'; cout << "after loop:" << endl; cout << a << endl; cout << b << endl;,c++,C++,当我在循环之前读取内容时,我得到了预期的结果。a包含abcdef,b什么都不是,因为还没有值。现在在循环之后,a和b都没有显示结果。这就是我迷路的地方。我使用*去引用a和b,并将a的值赋给b。我哪里出错了?我是否需要将&与此一起使用 解决方案: 循环完成后,指针*a指向arrayA的末端,指针*b指向arrayB的末端。因此,要获得arrayB的完整结果,只需在循环a和b发生变化后,将其指向字符串的末尾即可。您需要复制一份要单步执行的指针,以便在迭代时不会更改a和b的位置。循环a和b更改后,它们

当我在循环之前读取内容时,我得到了预期的结果。a包含abcdef,b什么都不是,因为还没有值。现在在循环之后,a和b都没有显示结果。这就是我迷路的地方。我使用*去引用a和b,并将a的值赋给b。我哪里出错了?我是否需要将&与此一起使用

解决方案:


循环完成后,指针*a指向arrayA的末端,指针*b指向arrayB的末端。因此,要获得arrayB的完整结果,只需在循环a和b发生变化后,将其指向字符串的末尾即可。您需要复制一份要单步执行的指针,以便在迭代时不会更改a和b的位置。

循环a和b更改后,它们将指向字符串的末尾。您需要复制一份要单步执行的指针,以便在迭代时不会更改a和b的位置。

问题在于,您正在输出用于迭代数组的临时变量。它们现在位于复制数据的末尾。您应该改为输出arrayA和arrayB的值。

问题是您正在输出用于迭代数组的临时变量。它们现在位于复制数据的末尾。您应该改为输出arrayA和arrayB的值。

记住数组的开头。此时,您将递增指针,并在循环结束后,在数组末尾打印指针所指向的内容

char arrayA[15] = "abcdef";
char arrayB[15];

char *a_beg = arrayA;
char *b_beg = arrayB;
char *a;
char *b;

cout << "before loop:" << endl;
cout << a_beg << endl;
cout << b_beg << endl;

a = a_beg;
b = b_beg;
while (*a != '\0') {
    // copy contents of a into b and increment
    *b++ = *a++;
}
// assign null to the end of arrayB
*b = '\0';

cout << "after loop:" << endl;
cout << a_beg << endl;
cout << b_beg << endl;

记住数组的开头。此时,您将递增指针,并在循环结束后,在数组末尾打印指针所指向的内容

char arrayA[15] = "abcdef";
char arrayB[15];

char *a_beg = arrayA;
char *b_beg = arrayB;
char *a;
char *b;

cout << "before loop:" << endl;
cout << a_beg << endl;
cout << b_beg << endl;

a = a_beg;
b = b_beg;
while (*a != '\0') {
    // copy contents of a into b and increment
    *b++ = *a++;
}
// assign null to the end of arrayB
*b = '\0';

cout << "after loop:" << endl;
cout << a_beg << endl;
cout << b_beg << endl;

请注意,NULL不是NULL字符,它被写为“\0”。NULL是C宏,表示空指针,不应该在C++中使用指针,使用新的文字Null pTR,或者简单地0。@ Peter Schneider谢谢。进行了必要的更改。哦,不要使用未初始化的数组,例如,对于像arrayB after beforeLoop这样的输出。在第一个字符中写入“\0”,使其成为空字符串。除非数组是全局的,否则程序只能同时工作。在这种情况下,数组为零。请注意,NULL不是NULL字符,它被写为“\0”。NULL是C宏,表示空指针,不应该在C++中使用指针,使用新的文字Null pTR,或者简单地0。@ Peter Schneider谢谢。进行了必要的更改。哦,不要使用未初始化的数组,例如,对于像arrayB after beforeLoop这样的输出。在第一个字符中写入“\0”,使其成为空字符串。除非数组是全局数组,否则您的程序只能巧合地工作。在这种情况下,数组为零。谢谢您的输入。我很感激。谢谢你的意见。我很感激。