私は、特定の値を持つポインタを返すように最善を尽くしています。しかし、私はなぜ私がいつもよりも多くの文字を得ているのを理解していません。私はいくつかの人に尋ねたところ、部分文字列を取得していると言われましたか?ポインタ戻り値の型に対して一連の文字を返すのはなぜですか?
問題:hotdogという単語を入力します。 私はインデックス[2]にポインタを返すことを期待しています。代わりに、私は文字の犬を取得します。何故ですか?どうすればインデックス[2]を得ることができますか?逆参照について考えていますが、戻り値の型をうまく動作させるには問題があります。
私の関数の戻り値の型やパラメータを変更することはできません。
#include <iostream>
char * GetValueAtIndex(char * const c, int index);
void ReadString(char * c, int length);
int main()
{
const int size = 10;
char ma[size];
char * pointer = ma;
ReadString(ma, 20);
std::cout << GetValueAtIndex(pointer, 3) << std::endl;
system("pause");
}
void ReadString(char * c, int length)
{
std::cin.getline(c, length);
}
char * GetValueAtIndex(char * const c, int index)
{
return c + index;
}
は、なぜあなたは期待しないインデックス[2 ]? GetValueAtIndexはインデックス3のインデックス3を使用し、 "hotdog"の4番目の文字は 'd'なので、出力が 'dog'になると期待します。 –