回覆列表
-
1 # 使用者1763558538480
-
2 # 南風微涼秋風茶色
有了chara[10];,那麼a就是這個陣列的第一個元素的指標,&a就是這個陣列的指標;因為一維陣列的第一個元素的指標和這個陣列的指標是同一個地址,區別是a+1指向a[1],而&a+1就指向a[10]了(這裡已越界了)。但&a和a的"值"是相同的,只是型別不同。c呼叫函式時,實參的型別都會被強制為形參的型別,scanf("%s",&a)或scanf("%s",a)中要求引數是char*型指標,那麼&a儘管是char**型別,但被強行轉換為char*型了……
scanf, fscanf, sscanf, scanf_s, fscanf_s, sscanf_s簡單地說:如果在格式字串(也就是 scanf_s 的第一個引數中)出現了空白字元(空格、\n、\t之類),那麼 scanf_s 會吃掉輸入中所有接下來的空白字元。也就是說,在這段程式碼中 scanf_s 會等到輸入中出現非空白字元才會返回。---------------- 分割線 ----------------如果要權威的話那麼給出標準原文:
C11 7.21.6.2 fscanf 函式---------------- 分割線 ----------------薛非的這個解釋太離譜我竟不知道應該從哪裡開始吐槽……(↑其實我覺得這個是高階黑