配列として初期化関数にポインタとして渡して初期化しようとしています。私のプログラムはエラーなしでコンパイルされますが、実行するとエラーになります。それは文字カウントを出力して停止します。配列初期化関数:ポインタを配列として渡す:C++
これは私がこれまで持っているものです。
#include<iostream>
#include<cctype>
#include<string>
#include<iomanip>
using namespace std;
void initialize(int *array, int n, int value);
int main()
{
char ch;
int punctuation, whitespace, digit[10], alpha[26];
punctuation = 0, whitespace = 0;
initialize(digit, sizeof(digit)/sizeof(int), 0);
initialize(alpha, sizeof(alpha)/sizeof(int), 0);
while(cin.get(ch))
{
if(ispunct(ch))
++punctuation;
else if(isspace(ch))
++whitespace;
else if(isdigit(ch))
++digit[ch - '0'];
else if(isalpha(ch))
{
ch = toupper(ch);
++alpha[ch - 'A'];
}
if(whitespace > 0)
{
cout << "Whitespace = " << whitespace << endl;
}
if(punctuation > 0)
{
cout << "Punctuation = " << punctuation << endl;
}
cout << setfill('-') << setw(17) << '-' << setfill(' ') << endl;
cout << " Character " << " Count " << endl;
cout << setfill('-') << setw(17) << '-' << setfill(' ') << endl;
return 0;
}
}
void initialize(int *array, int n, int value)
{
int i;
for (i = 0; i < n; ++i)
{
value += array[i];
}
}
は、私がここに何も悪いことをやっていることはよく分かりません。しかし、私は、ポインタが別の関数に渡された後にポインタがどのように動作するかについて少し混乱しています。誰か説明できますか?
はおそらく
A)
void initialize(int *array, int n, int value)
{
int i;
for (i = 0; i < n; ++i)
{
// no: value += array[i]; but:
array[i] = value;
}
}
見たい
初期化関数では、nの値を出力します。 – MikeC
"停止"?ハングアップ?クラッシュ?ちょうど終了? – hyde
それは文字数を表示してから終了します – Ambrus