後的程序關閉後,我進入第一輸入錯誤時運行C-程序首先輸入
#include<stdio.h>
int main(void)
{
int biology,chemistry;
printf("\nEnter marks for maths");
scanf("%d",biology);
printf("\nEnter marks for tech1");
scanf("%d",chemistry);
return(0);
}
後的程序關閉後,我進入第一輸入錯誤時運行C-程序首先輸入
#include<stdio.h>
int main(void)
{
int biology,chemistry;
printf("\nEnter marks for maths");
scanf("%d",biology);
printf("\nEnter marks for tech1");
scanf("%d",chemistry);
return(0);
}
您傳遞不正確的參數,以scanf()的調用。您必須通過變量的地址(請參閱scanf()
的文檔)以匹配%d
格式。
scanf("%d", &biology);
...
scanf("%d", &chemistry);
您還應該檢查返回碼,看看scanf()
調用是否成功。
C函數參數始終爲「按值傳遞」,這意味着函數scanf
只能看到您指定爲參數表達式的任何當前值的副本。
如果您通過biology
,那麼它只會看到未初始化的值。另一方面&biology
是一個指針變量的指針值,即scanf
可以用這個來修改biology
。
的scanf
將需要進行如下修改
scanf("%d", &biology);
scanf("%d", &chemistry);
要理解這一點,詳細閱讀Why does scanf require &
用途及生物學與化學 – Fredrik
幾乎任何[初學者書(http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)會告訴你你需要知道什麼。請找到並閱讀一個。 –