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;

当我像这样初始化guess char数组时:

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

4

你可以忽略它,它没有意义。你还没有初始化guessedWord,这就是guessedWordp指向。所以内容完全没有意义。

如果你愿意,添加guessedWord[0] = 0;初始化guessedWord为一个空字符串,谜团就会消失。

于 2013-04-21T23:17:22.143 回答