C指针错误值?

时间:2013-04-21 23:08:35

标签: c pointers

我还在学习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;

当我初始化猜测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 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ_ _ _ _ _ _ _"

我只是好奇为什么“_ _ _ _ _ _ _”这个在guessedWordp指针的末尾添加,当我实际初始化它以猜测char数组时(猜测数组正确地用相关值初始化)< / p>

我正在使用visual studio 2010

1 个答案:

答案 0 :(得分:4)

你可以忽略它,它毫无意义。您尚未初始化guessedWord,这就是guessedWordp指向的内容。所以内容完全没有意义。

如果您愿意,可以添加guessedWord[0] = 0;guessedWord初始化为空字符串,这个谜团将会消失。