我發現下面的示例代碼,演示如何使用的sscanf()
上TutorialPoints:爲什麼在這些變量前使用&符號?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int day, year;
char weekday[20], month[20], dtm[100];
strcpy(dtm, "Saturday March 25 1989");
sscanf(dtm, "%s %s %d %d", weekday, month, &day, &year);
printf("%s %d, %d = %s\n", month, day, year, weekday);
return(0);
}
我感到困惑的&day
使用符號的,&year
。 從我讀過的內容來看,&符號是以這種方式在一個指針變量上使用的,以便說「不要改變指針指向的位置,而是改變指針已經指向的地址的值」。
雖然這很有趣,因爲day
和year
不是指針。他們只是簡單的ints
。爲什麼不能寫成:
...
sscanf(dtm, "%s %s %d %d", weekday, month, day, year);
...
?
閱讀基本C教程的時間... –
提示:scanf的參數是什麼? – devnull
因爲沒有'&'s它們是按值傳遞的。 Scanf需要寫入它們,所以它需要引用它們可以寫入的指針。 – Rup