1

私はまだ C を学んでいます。単純な単語推測プログラムを実装しました。デバッグで遊んでいるときに、ポインターが実際に真のメモリ値を指していることがわかりましたが、char配列(別のもの)を初期化すると、他のchar配列を指すポインターも初期化されます。コードの冒頭は次のとおりです。

char *theword = pickAWord();//returns a word from .dat file
char guess[40]; //guess = 0x003afa94 
char guessedWord[20]; //guessedWord = 0x003afa78 
char play_again;
char *guessedWordp = guessedWord; //guessedWordp = 0x003afa78

int guessedWordIndex = 0;
int a = strlen(theword)-1;
int found = 0;
int *foundp = &found;
int *hakp = &hak;
int *guessedWordIndexp = &guessedWordIndex;

次のように推測文字配列を初期化すると:

for(i=0; i<a; i++){
    guess[i*2] = '_';
    guess[i*2+1] = ' ';
    if(i==a-1) guess[i*2+1] = '\0';
}

突然、*guessedWordp ポインターと配列の値が次のように変化します。

guessedWordp = 0x003afa78 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ_ _ _ _ _ _ _"
guessedWord = 0x003afa78 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ_ _ _ _ _ _ _"

char配列を推測するために実際に初期化するときに、「_ _ _ _ _ _」がguessedWordpポインターの最後に追加された理由に興味があります(ちなみに、正しい値で正しく初期化された配列を推測します)

私はビジュアルスタジオ2010を使用しています

4

1 に答える 1