剛剛學習C並且這是我第一次對stackoverflow so我不確定是否有權要求這個問題,因爲它似乎比其他人在這裏的微不足道,但我發現這段代碼在一本教科書中,當我試圖在Visual Studio中編譯我得到這個:即使返回的數據似乎與函數返回類型相匹配,編譯器返回錯誤「char *(int)」與「int()'的間接級別不同」
**error C2040: 'menutext' : 'char *(int)' differs in levels of indirection from 'int()'**
說實話我看過代碼,我不明白爲什麼編譯器在抱怨。我真的需要一些幫助。下面的代碼:
/*********************************************************/
/* */
/* MENU : program which prints out a menu */
/* */
/*********************************************************/
main()
{
int str_number;
for (str_number = 0; str_number < 13; str_number++)
{
printf ("%s",menutext(str_number));
}
}
/*********************************************************/
char *menutext(int n) /* return n-th string ptr */
{
static char *t[] =
{
" -------------------------------------- \n",
" | ++ MENU ++ |\n",
" | ~~~~~~~~~~~~ |\n",
" | (1) Edit Defaults |\n",
" | (2) Print Charge Sheet |\n",
" | (3) Print Log Sheet |\n",
" | (4) Bill Calculator |\n",
" | (q) Quit |\n",
" | |\n",
" | |\n",
" | Please Enter Choice |\n",
" | |\n",
" -------------------------------------- \n"
};
return (t[n]);
}
除了其他意見,所有的字符串字面指針應該是const,如修改它們是不確定的行爲。 – Puppy 2010-12-11 18:42:26