仅使用指针

时间:2015-09-21 23:32:50

标签: c++ arrays pointers

我在使用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;
}

2 个答案:

答案 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;
}