我还在学习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
答案 0 :(得分:4)
你可以忽略它,它毫无意义。您尚未初始化guessedWord
,这就是guessedWordp
指向的内容。所以内容完全没有意义。
如果您愿意,可以添加guessedWord[0] = 0;
将guessedWord
初始化为空字符串,这个谜团将会消失。