我在使用C ++中的指针进行编程练习时遇到了问题。
我的目标是只使用指针打印数组中的每个其他字符。
下面的for循环可以打印出我的数组中的所有字符,但是我一直遇到的问题只是打印出其他所有字符。
我尝试通过执行i+=2
来增加i,但只打印出与我的数组无关的非常稳定的字符。
此代码并非我的所有代码。它只是了解如何执行此操作的一小部分。
char myChar[13] = {'J', 'o', 'h', 'n', ' ', 'H', 'a', 'n', 'c', 'o', 'c', 'k', '\0'};
char myChar2[13] = {'J', 'o', 'h', 'n', ' ', 'H', 'a', 'n', 'c', 'o', 'c', 'k', '\0'};
char *temp5 = myChar;
char *temp6 = myChar2;
// Prints out all characters from array using pointers
cout<<"\n\nThis is the original element for the char array.\n\n";
cout<<"\t";
for(int i = 0; i< 13; i++)
{
*temp6 = *temp5;
temp5++;
cout<<*temp6;
}
答案 0 :(得分:2)
以下是你想要的东西:
char myChar[13] = {'J', 'o', 'h', 'n', ' ', 'H', 'a', 'n', 'c', 'o', 'c', 'k', '\0'};
char *temp5 = myChar;
// Prints out all characters from array using pointers
cout<<"\n\nThis is the original element for the char array.\n\n";
cout<<"\t";
for(int i = 0; i< 13/2; i++) // 13/2 to only increment through half the array
{
cout<<*temp5;
temp5+=2; // to skip every other character
}
你想只循环一半的数组,所以用13/2来处理,为了跳过这些额外的字符,我们将指针递增2.
答案 1 :(得分:0)
另一个答案是好的,但这里只是使用指针的另一种选择。&#34;&#34;这会打印出每个角色,但我确定你可以弄清楚如何修改它:
#include <iostream>
#include <cstddef>
using std::cout;
int main(void)
{
static const char message[] = "John Hancock!";
for ( const char* p = message; p < message + sizeof(message); ++p ) {
cout << *p;
}
cout << std::endl;
return EXIT_SUCCESS;
}